我正在尝试使用 Zed Shaw 的 Learn C 来学习 C 编程。我一直在研究 ex26,我们创建了一个用于安装软件的程序“devpkg”。此练习需要安装 Apache Portable Runtime 库。编写完本练习的代码后,我无法使用以下 makefile 编译程序:
PREFIX?=/user/local
CFLAGS=-g -Wall -I${PREFIX}/apr/include/apr-1 -I{PREFIX}/apr/include/apr-util-1
LDFLAGS=-L${PREFIX}/apr/lib -lapr-1 -pthread -laprutil-1
all: devpkg
install: all
install -d${DESTDIR}/${PREFIX}/bin/
install devpkg ${DESTDIR}/${PREFIX}/bin/
clean:
rm -f *.o
rm -f devpkg
rm -f *.dSYM
这个 makefile 似乎没有工作,因为当我使用“$make devpkg”时,并不是所有的 APR 库函数都被声明了。作为旁注,我在 Ubuntu 虚拟机上运行它。文中给出的解决方案是更改配置文件,然后“运行 ldconfig”以帮助链接器找到合适的库。
我不太了解 ldconfig 的手册页,无法正确使用该功能。如何正确运行 ldconfig?
此外,经过一番挖掘,我发现在 makefile 中使用“LDLIBS”而不是“LDFLAGS”解决了这个问题。我更改了makefile并编译了程序。
允许 C 编译器正确链接到 APR 库的“LDFLAGS”和“LDLIBS”有什么区别?是否有方便的命令列表可以帮助我更好地理解如何正确生成生成文件?
谢谢你的时间。