2
A
回答
3
重新編譯包含在libsrp.a旗創建位置無關代碼(FPIC)在
gcc -fpic -c foo.c
gcc -fpic -c bar.c
現在你可以將文件foo.o和文件bar.o到目標文件共享庫中
gcc -shared -o libshared.so foo.o bar.o
2
使用--whole-archive
標誌:
gcc -shared -o libsrp.so -Wl,--whole-archive -lsrp -Wl,--no-whole-archive
從ld man page(我的重點):
--whole歸檔 對於--whole存檔選項後,在命令行中提到的每個存檔,包括在歸檔中的每個對象文件鏈接,而不是在存檔中搜索所需的目標文件。 這通常用於將檔案文件轉換爲共享庫,強制每個對象包含在生成的共享庫中。此選項可能會多次使用。
+0
如果原始.a文件包含編譯時沒有fPIC的目標文件,新生成的相應.so文件能否正常工作? – solotim 2010-04-26 04:41:21
+1
@solotim - 我已經成功地在32位Linux上的共享對象中使用非PIC代碼 - 儘管對於64位Linux來說可能並非如此。 – 2010-04-26 23:01:12
相關問題
- 1. 如何強制ld使用靜態庫而不是共享庫?
- 2. CMake:共享庫,使用靜態庫
- 3. 在ubuntu下的共享庫
- 4. 共享和靜態庫
- 5. 共享iPhone靜態庫
- 6. 使鏈接時,gcc偏好靜態庫共享對象?
- 7. 我可以使用「gcc -llibnamehere」來綁定共享庫嗎?除了靜態庫嗎?
- 8. 使用Android NDK將共享庫和靜態庫編譯到共享庫中
- 9. GCC如何從靜態庫
- 10. GCC總是試圖用靜態的libc庫,而不是共享
- 11. 使用g ++創建共享和靜態庫(在Windows下)
- 12. 如何用共享庫編譯gcc?
- 13. 將共享庫轉換爲靜態庫
- 14. Qt 5:共享庫和靜態庫
- 15. 混合靜態庫和共享庫
- 16. 混合共享庫和靜態庫
- 17. C++靜態庫和共享庫
- 18. 取決於共享庫的靜態庫
- 19. 將靜態庫鏈接到共享庫?
- 20. SCons與靜態庫(.a)共享庫(.so)
- 21. 鏈接一個共享庫靜態到我的共享庫
- 22. 混合靜態和動態(共享)庫?
- 23. 使用gcc創建共享庫
- 24. 使用gcc構建共享庫
- 25. 鏈接靜態庫,共享另一個靜態庫
- 26. 如何使用共享庫靜態與cmake
- 27. 我該如何使用靜態或共享庫?
- 28. 如何從一個共享庫(ELF/GCC)
- 29. 當存在同名的共享庫時,如何強制與靜態庫鏈接
- 30. 如何用靜態庫編譯gcc?
可能的重複http://stackoverflow.com/questions/655163/convert-a-static-library-to-a-shared-library – 2010-04-15 06:29:27