2010-11-20 35 views
0

無法在gcc版本4.1.2上編譯c程序20080704(Red Hat 4.1.2-48)未定義符號:mysql_options問題

我該怎麼辦?

謝謝。

+3

請更具體一些,並提供一些細節/代碼。我相信你在這裏遇到了一個實際問題,看到這個問題關閉,這將是一件恥辱。 – casablanca 2010-11-20 18:24:21

回答

1

你可以做的一件事是提供更多的信息:)
這裏的典型例子是你錯過了來自其他軟件包的include文件,可能位於/ usr/lib/include或/ usr/local/lib /包括。無論哪種方式編譯器不知道「mysql_options」的含義。

0

未定義的符號通常是在最終鏈接階段無法解析的函數或變量。

最常見的原因是未能將包含它們的目標文件或共享庫添加到編譯器/鏈接器選項。例如,如果共享庫是libtest.so,則需要向gcc添加-ltest選項,該選項通常用於在許多系統上進行鏈接,而不是直接使用ld。

在許多其他情況下,鏈接程序無法找到所述庫,因爲庫搜索路徑(gcc中的-L選項)沒有正確設置以允許鏈接程序找到這些庫。但是,在這種情況下,鏈接器將輸出一條關於無法找到指定庫的單獨錯誤消息。

另一個不太常見的原因是使用帶有與實際共享庫不同步的條件部分的頭文件。作爲一個例子,設想在庫的頭文件中使用unicode版本的函數,而實際的共享庫對象沒有unicode支持,因此不包含這些函數。

就你而言,mysql_options符號位於libmysqlclient和libmysqlclient_r庫中。您應該檢查導致錯誤的命令行並查看是否有任何連接。

如果您需要更多幫助,但您應該向我們提供上述命令行,確切的錯誤消息和一些關於你想要編譯的信息。