我已经写了一个由许多文件组成的C程序,并使用APR (http://apr.apache.org) -它包括它的头文件,我更喜欢它的库的动态链接。
我的问题是,目前我硬编码在我的开发站点上设置的APR头的路径和我找到的静态APR库的路径。
这是我的Makefile的样子(我重命名了一些bits):
my_program: file1.c file2.c file3.c file4.c file5.c file6.c file7.c
@rm -f $@
$(CC) -std=c99 -pedantic -D_POSIX_C_SOURCE -I/usr/local/include/apache -L/usr/local/lib -lapr-1 $(CFLAGS) $^ -o $@显然,APR静态库文件的名称是libapr-1.a,但我也有libapr-1.so和libapr-1.so.0,甚至还有libapr-1.la,我甚至不确定它是什么。因此,实际上,我怀疑现在我是静态地链接到APR。除了我的目标是一个令人尊敬的构建系统,我想动态链接到APR。
对于我来说,有没有一种常见的做法是建立一个自动构建,不仅对我现在有效,而且足够灵活,供其他人构建我的程序?我闻到了autotools的味道,但我完全没有使用它们的经验,现在我想满足于下一个最好的东西。我有什么选择?
发布于 2011-01-22 04:30:43
默认情况下,链接器将拾取共享库(.so),如果找不到静态库(.a)。所以当你把它传递给链接器-lapr-1时,它会恰到好处地满足你的需求。
要确保您的二进制文件确实将使用共享库,请运行以下命令:
ldd your_binary你应该会在输出列表中看到apr库。
https://stackoverflow.com/questions/4762780
复制相似问题