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. CMake:共享庫,使用靜態庫
- 2. 在ubuntu下的共享庫
- 3. 共享iPhone靜態庫
- 4. 使鏈接時,gcc偏好靜態庫共享對象?
- 5. GCC如何從靜態庫
- 6. GCC總是試圖用靜態的libc庫,而不是共享
- 7. 如何用共享庫編譯gcc?
- 8. 將共享庫轉換爲靜態庫
- 9. 取決於共享庫的靜態庫
- 10. 混合共享庫和靜態庫
- 11. SCons與靜態庫(.a)共享庫(.so)
- 12. 混合靜態庫和共享庫
- 13. 鏈接一個共享庫靜態到我的共享庫
- 14. 混合靜態和動態(共享)庫?
- 15. 使用gcc構建共享庫
- 16. 鏈接靜態庫,共享另一個靜態庫
- 17. 如何使用共享庫靜態與cmake
- 18. 如何從一個共享庫(ELF/GCC)
- 19. 當存在同名的共享庫時,如何強制與靜態庫鏈接
- 20. 如何用靜態庫編譯gcc?
- 21. gcc的鏈接共享庫
- 22. 使用GNU libtool創建靜態庫和共享庫?
- 23. 使用靜態庫而不是共享庫
- 24. JNI使用靜態NTL庫構建共享庫
- 25. 使用靜態gnutls庫的共享庫有文本重定位
- 26. 如何在靜態庫中使用共享庫而不強制最終用戶鏈接到這些庫?
- 27. 想詳細瞭解共享庫如何在靜態庫中工作
- 28. 創建靜態和共享C++庫
- 29. 鏈接共享對象與靜態庫
- 30. 靜態和共享庫符號衝突?
可能的重複http://stackoverflow.com/questions/655163/convert-a-static-library-to-a-shared-library – 2010-04-15 06:29:27