我想編譯一個用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'
任何想法?
感謝,
沃爾特
我想編譯一個用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'
任何想法?
感謝,
沃爾特
這意味着,無論你的想法正被用來對付它鏈接時,預計庫正在使用中不包含這兩個函數。所以,你需要追蹤庫實際加載的期望值,然後檢查函數是否在其中(它們不是,但你應該檢查看看是什麼定義的)。
一旦找到了庫,可以使用nm -g libexpect.so
來查看已定義的符號。我希望你在定義的符號列表中看不到exp_spawnl
或exp_expectl
。
然後,你需要找出你確實有它的庫版本,並決定是否要升級等
我假設你引用的名字確實正確無誤。
是對預期的頭文件安裝在/ usr/include目錄?
我想未定義的引用錯誤來自鏈接器而不是編譯器。該庫安裝了什麼目錄?嘗試使用
-L/path/to/lib -lexpect
選項
我在那裏看到兩個不同的編譯命令。你正在運行這兩個命令嗎?爲什麼?哪一個產生錯誤? – abelenky 2010-12-23 20:23:40
libexpect.so和libtcl.so是LD_LIBRARY_PATH嗎? – 2010-12-23 20:24:09
我嘗試了兩個,實際上cc和gcc。說實話,我還沒有用過gcc,我主要是一個Java人。 – Walter 2010-12-23 20:36:32