在
編譯static executable的時候,有時候會出現下面的錯誤訊息:
- /usr/bin/ld: cannot find -lm
- /usr/bin/ld: cannot find -lc
- collect2: error: ld returned 1 exit status
意思就是說,在連結的時候缺少了libm與libc這兩個函式庫(注意-lm配的是libm、-lc配對的是libc),但用下面的指令測試:
- /sbin/ldconfig -p | grep libm.so
這邊會顯示出libm.so檔案的位置
- /sbin/ldconfig -p | grep libc.so
這邊會顯示出libc.so檔案的位置
- gcc -lm --verbose
這邊不會出現cannot find -lm
意思就是說,函式庫是存在的,但是沒辦法做成靜態連結。解決為安裝靜態連結函式庫了,通常套件的名字會是
glibc-static,在CentOS這種用yum的機器上面,輸入:
- yum list installed | grep glibc
- sudo yum install glibc-static
這樣應該就可以順利編譯static executable了~
參考資料
_EOF_
沒有留言:
張貼留言