c - 链接到 bsd/stdlib.h

标签 c linker gnu-make

我不太熟悉链接的工作原理,所以如果我没有提供足够的详细信息,请提前致歉。

我已经用 sudo apt-get install libbsd-dev 安装了 bsd 库在 ubuntu 11.10 上我相对确定它已经安装,因为存在堆/合并排序的 man 函数(我正在寻找的函数)

我要编译的 C 文件有 #include <bsd/stdlib.h>在文件的顶部。我也是#include <stdlib.h> .

Makefile 适用于其他库,包括 time.h 给我 struct timespec

假设 apt-get 安装 libbsd 的位置有什么错误吗?第二个标准库是否以某种方式发生冲突?

再一次为稀疏的细节道歉。

Makefile 代码如下:

CFLAGS=-g -O2 -Wall -Wextra -Isrc -rdynamic -DNDEBUG $(OPTFLAGS)
LIBS=-llcthw -lbsd -lrt -ldl  $(OPTLIBS)
LDLIBS=-lbsd -lrt -ldl
PREFIX?=/usr/local

SOURCES=$(wildcard src/**/*.c src/*.c)
OBJECTS=$(patsubst %.c,%.o,$(SOURCES))

TEST_SRC=$(wildcard tests/*_tests.c)
TESTS=$(patsubst %.c,%,$(TEST_SRC))

TARGET=build/liblcthw.a
SO_TARGET=$(patsubst %.a,%.so,$(TARGET))

all : $(TARGET) $(SO_TARGET) tests

最佳答案

下面的补丁怎么样? 此补丁适用于 http://c.learncodethehardway.org/book/ex28.html 中的 Makefile

--- orig/Makefile   2013-11-15 17:58:44.571824670 +0900
+++ Makefile    2013-11-15 17:59:37.315825864 +0900
@@ -1,5 +1,6 @@
-CFLAGS=-g -O2 -Wall -Wextra -Isrc -rdynamic -DNDEBUG $(OPTFLAGS)
-LIBS=-ldl $(OPTLIBS)
+CFLAGS=-g -O2 -Wall -Wextra -Isrc $(shell pkg-config --cflags libbsd) -rdynamic -DNDEBUG $(OPTFLAGS)
+COMMON_LIBS = $(shell pkg-config --libs libbsd) -ldl $(OPTLIBS)
+LDLIBS=$(COMMON_LIBS)
 PREFIX?=/usr/local

 SOURCES=$(wildcard src/**/*.c src/*.c)
@@ -14,7 +15,7 @@
 # The Target Build
 all: $(TARGET) $(SO_TARGET) tests

-dev: CFLAGS=-g -Wall -Isrc -Wall -Wextra $(OPTFLAGS)
+dev: CFLAGS=-g -Wall -Wextra -Isrc $(shell pkg-config --cflags libbsd) $(OPTFLAGS)
 dev: all

 $(TARGET): CFLAGS += -fPIC
@@ -31,7 +32,7 @@

 # The Unit Tests
 .PHONY: tests
-tests: CFLAGS += $(TARGET)
+tests: LDLIBS = $(TARGET) $(COMMON_LIBS)
 tests: $(TESTS)
    sh ./tests/runtests.sh

关于c - 链接到 bsd/stdlib.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18368121/

相关文章:

c - 如何输入不带空格或 '\n'的整数数组?

linker - MARS、MIPS 汇编程序,将两个文件链接在一起?

makefile - Makefile总是重建

linux - 有没有办法在不重建其依赖项的情况下强制重建目标(make -B)?

c - 有符号整数的算术右移

c - LWIP + RTOS - 如何避免 netconn 永远阻塞线程?

gcc - 我可以让 CMake 使用 gcc 增量链接生成 Makefile 吗?

ios - UI 测试 Mach-O 链接器错误

makefile - 了解 Makefile 语法和变量

c - 第一次使用 C 中的列表未处理的异常