如何将外部库静态链接到我的可执行文件中

How do I statically link external libraries into my executable?

本文关键字:我的 可执行文件 链接 静态 外部      更新时间:2023-10-16

我不想让最终用途必须安装库,所以,最好将库打包在我的exec中。

这是 make 文件中的相关行:

hPif : src/main.o src/fann_utils.o src/hashes.o src/Config.o
    g++ -o  hPif src/main.o src/fann_utils.o src/hashes.o src/Config.o -static -lfann -lboost -L/usr/local/lib 

我正在尝试链接 fann 和 boost,我在某处(http://www.adp-gmbh.ch/cpp/gcc/create_lib.html)读到使用 -static 标志允许这样做。

我做错了什么?

-static 标志是正确的,但您需要确保您的库是没有依赖项的静态库。 如果它们是作为共享构建的(或具有共享依赖项),gcc 将不会静态链接它们(和/或您仍将拥有库依赖项)。

您可能需要重建 Boost 库才能实现此目的。