gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:56:37 25 4
gpt4 key购买 nike

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

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

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

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.solibapr-1。 so.0 甚至 libapr-1.la 我什至不确定是什么。所以,实际上,我怀疑现在我正在静态链接到 APR。除了我的目标是建立一个受人尊敬的构建系统之外,我还想动态链接到 APR。

我是否有一种常见的做法来设置一个自动构建,它不仅对我现在有效,而且对其他人构建我的程序也足够灵活?我闻到了 autotools 的味道,但我对它们的体验绝对为零,现在想满足于下一个最好的东西。我有哪些选择?

最佳答案

默认情况下,链接器将选择共享库 (.so),如果没有找到静态库 (.a)。因此,当您传递给链接器 -lapr-1 时,它将完全符合您的要求。

为确保您的二进制文件确实会使用共享库运行:

ldd your_binary

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

关于c - 如何为使用第三方库的 C 程序设置成熟的构建过程(APR - Apache Portability Runtime),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4762780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com