相关疑难解决方法(0)

将静态库转换为共享库(从libsome.a创建libsome.so):我的符号在哪里?

这个问题的标题是一个确切的愚蠢,但这个问题的答案对我没有帮助.

我有一堆打包在静态库中的目标文件:

% g++ -std=c++98 -fpic -g -O1 -c -o foo.o foo.cpp
% g++ -std=c++98 -fpic -g -O1 -c -o bar.o bar.cpp
% ar -rc libsome.a foo.o bar.o
Run Code Online (Sandbox Code Playgroud)

我想从libsome.a生成libsome.so而不是目标文件,但是库真的是准系统:

% g++ -std=c++98 -fpic -g -O1 -shared -o libsome.so libsome.a
% nm -DC libsome.so
0000xxxx A _DYNAMIC
0000xxxx A _GLOBAL_OFFSET_TABLE_
         w _Jv_RegisterClasses
0000xxxx A __bss_start
         w __cxa_finalize
0000xxxx A _edata
0000xxxx A _end
0000xxxx T _fini
0000xxxx T _init
Run Code Online (Sandbox Code Playgroud)

静态库是好的,或者至少我完全能够将它链接到可执行文件并让它运行包含的功能.如果我从foo.o和bar.o创建libsome.so,一切都很好.

c++ g++ shared-libraries ld static-libraries

11
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

g++ ×1

ld ×1

shared-libraries ×1

static-libraries ×1