日期:2014-05-16  浏览次数:20693 次

关于ncurser库中term.h在链接时函数undefined reference to问题
**** Build of configuration Debug for project about_zd ****

make all 
Building file: ../src/about_zd.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/about_zd.d" -MT"src/about_zd.d" -o"src/about_zd.o" "../src/about_zd.cpp"
Finished building: ../src/about_zd.cpp
 
Building target: about_zd
Invoking: GCC C++ Linker
g++  -o"about_zd"  ./src/about_zd.o   
./src/about_zd.o: In function `getchoice(char const*, char const**, _IO_FILE*, _IO_FILE*)':
/home/ransong/project/Debug/../src/about_zd.cpp:77: undefined reference to `tigetstr'
/home/ransong/project/Debug/../src/about_zd.cpp:78: undefined reference to `tigetstr'
/home/ransong/project/Debug/../src/about_zd.cpp:81: undefined reference to `tputs'
/home/ransong/project/Debug/../src/about_zd.cpp:82: undefined reference to `tparm'
/home/ransong/project/Debug/../src/about_zd.cpp:82: undefined reference to `tputs'
/home/ransong/project/Debug/../src/about_zd.cpp:89: undefined reference to `tparm'
/home/ransong/project/Debug/../src/about_zd.cpp:89: undefined reference to `tputs'
/home/ransong/project/Debug/../src/about_zd.cpp:108: undefined reference to `tparm'
/home/ransong/project/Debug/../src/about_zd.cpp:108: undefined reference to `tputs'
/home/ransong/project/Debug/../src/about_zd.cpp:112: undefined reference to `tputs'
collect2: ld 返回 1
make: *** [about_zd] 错误 1

已测试各步骤,编译步骤无问题。确认是在链接时出了问题。
根据网上资料http://blog.csdn.net/aiwoziji13/article/details/7330333
不过这两种情况有点不同。
试了很多,将term.h拷贝到工程目录下,编译头文件。生成.h.gch,再和原文件.o一起生成执行文件也不行。(这个搞法不知道是不是可以的,我乱试)。
还有有可能是C库不是C加加库,所以我用g加加和gcc都试了,都是同样的错误。
问了很多人,实在没办法了。
系统自带库文件的函数调用碰到这问题实在是不知道为啥。
望各位大大指点指点。可以参考上面网上资料。

我还怕是自己代码什么的问题,
只包含了几个头文件,加上term.h,一句代码调用tigetstr()。依然同样的问题。
万分感谢。

------解决方案--------------------
是的!连接系统库的时候需要加这些的!
和pthred库是一样的!