我在链接我当前正在从事的项目的一些选项方面遇到了一些困难:
我正在尝试创建一个与其他 2 个库链接的共享库。 (我们称他们为libfoo.so
and libbar.so
)
我的输出库必须是共享库,并且我想要静态链接libfoo.so
到生成的库,但是libbar.so
应该作为动态库链接。 (libbar.so
应该在每台机器上都可用,其中libfoo.so
不可用,我不希望用户安装它/将其与我的二进制文件一起发送。)
我怎样才能存档这个?
我当前的构建指令如下所示:
c++ -Wall -shared -c -o src/lib.o src/lib.cpp
c++ -Wall -shared -o lib.ndll src/lib.o -lfoo -lbar
我的辩护是:我不是 c/c++ 专家,如果这个问题看起来很愚蠢,我很抱歉。
Linux C/C++ 库有两种类型。
为了静态链接libfoo.so
到您的二进制文件中,您将需要一个相应的静态库,通常称为libfoo.a
。您可以在创建可执行程序时通过在编译和链接过程中调用静态库来使用静态库。
结果会将您的构建命令更改为如下所示:
g++ -Wall -fPIC -c -o src/lib.o src/lib.cpp
g++ -shared -Wl,-soname,mylib.so.1 -o mylib.so.1 src/lib.o -L/path/to/library-directory -lbar libfoo.a
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)