链接静态库的顺序问题
生活随笔
收集整理的這篇文章主要介紹了
链接静态库的顺序问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在鏈接靜態庫時,如果多個靜態庫之間存在依賴關系,則有依賴關系的靜態庫之間存在順序問題,這個在使用靜態庫時,需要注意,否則會報符號找不到問題,舉例:
libb.a依賴于是liba.a,而可執行文件test只直接依賴于libb.a,則鏈接選項應當為:
-b -a,而不是-a -b,否則會報liba.a中的某些符號找不到.
?
gcc -c a.c
ar cr liba.a a.o
gcc -c b.c
ar cr libb.a b.o # 雖然libb.a使用到了liba.o中的一些函數,但并不會將它們的定義包含進來,所以在鏈接test時需要指定這兩個庫
?
?
另外,在編譯libb.a時是不指定liba.a的,因為編譯一個靜態庫不會使用到鏈接選項,而只需要指定需要依賴的頭文件路徑即可.
總結
以上是生活随笔為你收集整理的链接静态库的顺序问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell:后台运行amp;,日志重定向
- 下一篇: 指定结构体字节对齐方式