在Linux系統下編譯link時出現了錯誤,提示“undefined reference’dlclose@xxx函數”錯誤,相信不少用戶也遇到這個問題,這個問題不難解決,下面小編給大家介紹下undefined reference錯誤的解決方法。
編譯完link的時候,報了一句undefined reference’dlclose@xxx函數‘,找主程過來看了下,說是dl庫沒有包進去,查了下dl庫是用來做動態庫加載的(dynamic load),項目用到了libmysqld.so,加了之後還是有問題,將-ldl鏈接選項改到最後才可以。
比較常見的undefined reference問題:
1.dl庫
undefined reference to ‘dlerror’
undefined reference to ‘dlopen’
undefined reference to ‘dlerror’
增加-ldl鏈接選項 (-l是鏈接選項的前綴)
2.pthread庫
undefined reference to ‘pthread_create’
undefined reference to ‘pthread_xxxx‘
增加-lpthread鏈接選項
3.rt庫
undefined reference to `clock_gettime’
增加-lrt鏈接選項
如果是使用codeblocks,可以再link option裡加,不過因為依賴順序的問題,如果link option裡加了還是報錯,直接在link file裡添加pthread dl rt等即可
如果是你自己的庫出現這undefined reference什麼函數,先去查下庫的源代碼,看看具體問題。
上面就是Linux編譯link出錯的解決方法介紹了,本文除了介紹link出錯外,還總結了一些undefined reference問題,希望對你有所幫助。