2010-12-23 73 views
3

我想編譯一個用c語言編寫的使用expect.h頭文件的程序。我正在嘗試這個:期望-c程序

cc -I/usr/include main.c -lexpect -ltcl 
cc -I/usr/include main.c 

我嘗試了與gcc相同,但無濟於事。

我得到這個:

undefined reference to `exp_spawnl' 
undefined reference to `exp_expectl' 

任何想法?

感謝,

沃爾特

+0

我在那裏看到兩個不同的編譯命令。你正在運行這兩個命令嗎?爲什麼?哪一個產生錯誤? – abelenky 2010-12-23 20:23:40

+0

libexpect.so和libtcl.so是LD_LIBRARY_PATH嗎? – 2010-12-23 20:24:09

+0

我嘗試了兩個,實際上cc和gcc。說實話,我還沒有用過gcc,我主要是一個Java人。 – Walter 2010-12-23 20:36:32

回答

1

這意味着,無論你的想法正被用來對付它鏈接時,預計庫正在使用中不包含這兩個函數。所以,你需要追蹤庫實際加載的期望值,然後檢查函數是否在其中(它們不是,但你應該檢查看看是什麼定義的)。

一旦找到了庫,可以使用nm -g libexpect.so來查看已定義的符號。我希望你在定義的符號列表中看不到exp_spawnlexp_expectl

然後,你需要找出你確實有它的庫版本,並決定是否要升級等

我假設你引用的名字確實正確無誤。

0

是對預期的頭文件安裝在/ usr/include目錄?

我想未定義的引用錯誤來自鏈接器而不是編譯器。該庫安裝了什麼目錄?嘗試使用

-L/path/to/lib -lexpect

選項