我在我的IDE中有一個項目。我需要製作一個共享庫以用於擴展。我不想使用共享庫設置製作此項目的副本。有沒有辦法使用我現有項目中的目標文件(.o)來構建共享庫?據我所知,我可以爲此寫一個makefile。從現有的目標文件製作共享庫
8
A
回答
13
我假設你對某種的Unix和可能使用了GNU工具鏈。在這種情況下,要創建一個合適的共享庫,您需要先使用與位置無關的代碼標誌(-fpic或-fPIC)編譯代碼,然後才能創建共享庫。除非你的.o文件已經被這些標誌編譯,否則你最終不會得到一個工作的共享庫。
如果他們已經編譯爲位置獨立代碼,通常g++ -shared ...
應該做的伎倆。
7
g++ -shared -fPIC -o myshared.so *.o
相關問題
- 1. 共享庫目標文件鏈接
- 2. CMake錯誤:共享庫目標沒有庫目標的目標
- 3. 如何用額外的目標文件重新鏈接現有的共享庫
- 4. UWP:從共享目標共享
- 5. 項目文件夾中的共享庫
- 6. 加載共享庫時出錯:libstdC++。so.6:無法打開共享目標文件:沒有這樣的文件
- 7. 製作瘦共享庫
- 8. 跨庫項目共享文件
- 9. Cmake「沒有規則制定目標」,同時構建共享庫
- 10. 從與控制器共享名稱的目錄共享靜態文件
- 11. 在websphere共享庫中添加共享項目jar文件
- 12. 多個目標共享文件
- 13. 執行共享目標文件
- 14. 無法打開共享目標文件
- 15. 使用共享目標文件
- 16. Config.cmake文件用於定製共享庫
- 17. 從共享文件
- 18. 作爲可執行文件目錄的共享庫路徑
- 19. 「庫沒有發現-lPods-目標j2objc共享」錯誤j2objc-gradle這個插件
- 20. 共享庫文件加載
- 21. Make文件G ++共享庫
- 22. 共享庫文件大小
- 23. 加載共享庫時出錯;無法打開共享對象文件:沒有這樣的文件或目錄
- 24. 多個共享庫從一個項目與共同的源文件
- 25. 發現共享庫的公共方法
- 26. Bzr:從現有獨立存儲庫創建共享存儲庫
- 27. 無法加載庫'gs':libgs.so:無法打開共享目標文件:沒有這樣的文件或目錄
- 28. 加載庫無法打開共享目標文件:沒有這樣的文件或目錄
- 29. GMP共享庫沒有發現
- 30. 不與共享庫共享所有類
+1我忘了提及目標文件也需要fpic。 – pajton 2010-04-06 09:47:05
@pajton - 猜猜誰被這件事發現了:)。 – 2010-04-06 10:22:25