我正在尝试编译一个可执行文件,我也想将其用作共享库。当我清楚地编译并将其链接为“可执行”时 - 一切正常 - 文件可以启动并正常工作。在这个阶段,我无法正确地将其他库与其链接起来(日志中有大量的重新定义)。当我尝试添加选项 -Fpic -shared - 程序成功编译,但从段错误开始。我怎样才能同时使它成为可执行文件和“共享库”?
最佳答案
单个文件不能同时是共享库和可执行文件。但是您可以两次链接您的目标文件以制作两者。它会像这样:
g++ -c -o module.o module.cpp # create an object that has no main()
g++ -shared -fPIC -o libmodule.so module.o # build shared library
g++ -o program module.o main.cpp # build executable
或者相反,最后一行可以链接共享库(在这种情况下,您需要在运行可执行文件时提供该库):
g++ -o program -l module main.cpp
关于c++ - Linux 可执行文件作为共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20783010/