이 질문의 제목은 exact dupe이지만 그 질문에 대한 답은 저에게 도움이되지 않습니다.정적 라이브러리를 공유 라이브러리로 변환 (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
내가 대신 오브젝트 파일의 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
정적 라이브러리는 괜찮습니다, 또는 적어도 나는 완벽하게 실행에 연결 할 수있어 그것이 포함 된 기능을 실행할 수 있습니다. 또한, foo.o와 bar.o에서 libsome.so를 생성하면 모든 것이 잘됩니다.
+1 너 거기. 나는 "남자"를 시도하고 그것을 놓쳤다. –
감사합니다. ld 맨 페이지를 위아래로 검색했지만 어떻게 든이 옵션을 놓쳤습니다. –
이제이 훌륭한 대답 만이 CMake 프로젝트로 이것을 설정하는 방법을 나타낼 수 있습니다! 감사 –