我们团队的项目开发方式是,从所有的 .o
对象文件中生成一个共享对象库用于应用程序。我的任务(希望它具有足够的特定性和普遍性,以便于他人使用!)是仅链接上次创建可执行文件后更改过的文件。例如,以下是我用来构建 .so 的命令行:
g++34 -shared -rdynamic -m64 -Wl,-rpath,'$ORIGIN' MyObject1.o MyObject2.o MyObject3.o MyObject4.o -o libMySharedLibrary.so
这个代码已经按照预期运行! :) 我的目标是能够仅链接已更改的对象文件,以加速并发链接进程。一个示例命令如下:
g++34 -shared -rdynamic -m64 -Wl,-rpath,'$ORIGIN' MyObject1.o MyObject3.o -o libMySharedLibrary.so
希望只使用更改过的目标文件更新 libMySharedLibrary.so,同时保留其中较旧的目标文件。我发现链接器有一个 -i 选项,它与 -r 选项相同,似乎可以将所有目标文件组合成一个大目标文件。但不幸的是,这并不是我想要的。简而言之,我想在初始链接后仅链接更改过的目标文件,以便将来的链接过程更快。有没有办法实现这一点?
-i
/-r
的代码吗?看起来这正是你想要的选项,但我预计你会遇到符号冲突(考虑到没有“替换”选项)。 - Stéphan Kochen