我正在使用boost.build。 在其中一個步驟"g++" -o "testbed/bin/gcc-5.3.0/debug/link-static/get_tag34_tag34_processed" -Wl,--start-group "testbed/bin/gcc-5.3.0/debug/link-static/get_tag34_tag34_processed.o" "/usr/local/lib64/librabbitmq.a" "/usr/lib64/libmysqlcppconn-static.a" "/apps/boost/root/bin.v2/libs/date_time/build/gcc-5.3.0/debug/link-static/libboost_date_time.a" -Wl,-Bstatic -lz -lbz2 -Wl,-Bdynamic -Wl,--end-group -g -lSimpleAmqpClient -lcrypto -ldl -lmysqlcppconn -lpthread -lrdkafka -lrdkafka++ -lssl
我想鏈接到一個kafka庫。 在系統目錄中有.so和.a /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/librdkafka++.so
和/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/librdkafka++.a
。但是它更喜歡.so。 我該如何解決這個問題?爲什麼不建立偏好靜態庫?
0
A
回答
0
使用.a文件的完整路徑。因此,而不是
-lrdkafka
使用
"/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/librdkafka++.a"
(通知缺乏 '-l')
另外,刪除的.so。 :)
這不是boost.build的行爲,這是多麼gcc和ld工作:
-l namespec --library = namespec
加入由namespec指定的歸檔或目標文件到要鏈接的文件列表。此選項可以使用任意次數。如果namespec的格式爲:filename,則ld將在庫路徑中搜索名爲filename的文件,否則它將在庫路徑中搜索名爲libnamespec.a的文件。 在支持共享庫的系統上,ld也可以搜索libnamespec.a以外的文件。具體來說,在ELF和SunOS系統上,ld將在搜索名爲libnamespec.so的庫之前搜索名爲libnamespec.a的庫。 (按照慣例,「.so」擴展名錶示一個共享庫。)請注意,此行爲不適用於:filename,它始終指定一個名爲filename的文件。
鏈接器只會在命令行中指定的位置搜索存檔。如果歸檔文件定義了一個符號,該符號在命令行上歸檔之前出現的某個對象中未定義,則鏈接器將從歸檔文件中包含相應的文件。但是,稍後在命令行中出現的對象中的未定義符號將不會導致鏈接器再次搜索存檔。
請參見 - (選項的方式來強制鏈接器多次搜索存檔
您可以列出在命令行上同一歸檔多次
這種類型的檔案搜索的是標準。對於Unix連接器,但是,如果您在AIX上使用ld,請注意它與AIX連接器的行爲不同。
相關問題
- 1. 爲什麼靜態變量不好?
- 2. 無法建立靜態庫
- 3. 爲什麼不能建立發現模塊@angular升級靜態
- 4. 如何將Gperftools建立爲靜態庫?
- 5. 什麼是靜態庫,什麼是動態庫,有什麼區別,什麼是更好的使用,爲什麼?
- 6. 建立依賴於另一個靜態庫的靜態庫
- 7. 爲什麼不建立Eval.hs?
- 8. 偏好庫不加載偏好
- 9. 使用gprbuild構建靜態獨立庫
- 10. scons建立靜態和共享庫
- 11. 如何建立libvpx靜態庫
- 12. 的Android NDK:建立我的靜態庫
- 13. 新的靜態庫已建立錯誤
- 14. 建立靜態庫在單點觸摸
- 15. 爲什麼我要使用靜態庫?
- 16. 爲什麼靜態用於導入庫
- 17. 爲什麼cmake_link_libraries包含靜態庫?
- 18. C++靜態庫太大了,爲什麼?
- 19. 類之間的共享偏好(靜態)?
- 20. 單身vs靜態偏好和缺陷
- 21. 爲什麼靜態方法不好,除了測試
- 22. 爲iPhone創建靜態庫
- 23. 爲什麼使用'*'來建立一個視圖不好?
- 24. 爲什麼我的靜態構建需要共享庫?
- 25. 使鏈接時,gcc偏好靜態庫共享對象?
- 26. 爲什麼CanvasRenderingContext2D.createLinearGradient()不是靜態函數?
- 27. 爲什麼getAppProperty()不是靜態方法?
- 28. 爲什麼QDir :: rmdir不是靜態的?
- 29. 爲什麼typedef不能用於靜態?
- 30. 爲什麼Char.MinVal/.MaxVal不是靜態的?