如何为使用第三方库(APR-Apache Portability Runtime)的C程序设置成熟的构建过程

如何为使用第三方库(APR-Apache Portability Runtime)的C程序设置成熟的构建过程,c,gcc,dynamic-linking,static-linking,ld,C,Gcc,Dynamic Linking,Static Linking,Ld,我写了一个C程序,它由许多文件组成,并使用APR(http://apr.apache.org)-它包括它的标题,我更喜欢它的库的动态链接 我的问题是,目前我硬编码在我的开发站点上设置的APR头的路径和我找到的静态APR库的路径 这就是我的Makefile的样子(我重命名了一些位): 显然,APR静态库文件的名称是libapr-1.a,但我也有libapr-1.so和libapr-1.so.0甚至libapr-1.la,我甚至不确定是什么。因此,实际上,我怀疑现在我正在静态地链接到APR。除了我的

我写了一个C程序,它由许多文件组成,并使用APR(http://apr.apache.org)-它包括它的标题,我更喜欢它的库的动态链接

我的问题是,目前我硬编码在我的开发站点上设置的APR头的路径和我找到的静态APR库的路径

这就是我的Makefile的样子(我重命名了一些位):

显然,APR静态库文件的名称是
libapr-1.a
,但我也有
libapr-1.so
libapr-1.so.0
甚至
libapr-1.la
,我甚至不确定是什么。因此,实际上,我怀疑现在我正在静态地链接到APR。除了我的目标,一个体面的建设系统,我想链接到APR动态


我是否有一个共同的做法来建立一个自动化的构建,它不仅对我现在有效,而且对其他人来说足够灵活来构建我的程序?我闻到了
自动工具
的近在咫尺的味道,但我对它们毫无经验,现在我想接受下一个最好的选择。我有哪些选项?

默认情况下,链接器将拾取共享库(.so),如果找不到静态库(.a)。 因此,当您传递到linker
-lapr-1
时,它将执行您想要的操作

要确保您的binrary确实将使用共享库,请运行:

ldd your_binary
您应该在输出列表中看到apr库

ldd your_binary