提问人:M.Talafha 提问时间:7/14/2016 更新时间:7/14/2016 访问量:1995
未定义对“gsl_vector_free”的引用
undefined reference to `gsl_vector_free'
问:
我正在尝试使用 g++ 编译一些 c++ 文件,这些文件同时依赖于 libxml2 和 gsl 库的问题,当我给出编译命令时
g++ -Wall -I/usr/include/libxml2 -lgsl main.cpp YUNucNet.cpp src/*.cpp -lxml2 -lm
它给了我许多未定义 GSL 引用的链接错误
'/tmp/ccCJrl0t.o: In function `WnSparseSolve__Phi__solve:
WnSparseSolve.cpp:(.text+0x24bc): undefined reference to `gsl_vector_calloc'
WnSparseSolve.cpp:(.text+0x24cc): undefined reference to `gsl_vector_calloc'
WnSparseSolve.cpp:(.text+0x24e9): undefined reference to `gsl_vector_calloc'
WnSparseSolve.cpp:(.text+0x24ff): undefined reference to `gsl_vector_alloc'
WnSparseSolve.cpp:(.text+0x250f): undefined reference to `gsl_vector_calloc
....etc
这里有什么问题??
答:
2赞
ead
7/14/2016
#1
长话短说:库必须在命令行中的 cpps 之后,即:-lgsl
g++ -Wall -I/usr/include/libxml2 main.cpp YUNucNet.cpp src/*.cpp -lxml2 -lgsl -lm
您可以使用选项调用 g++,以查看在编译的目标文件之前调用链接器时,在后台会发生什么,而不是您看到的。因此,链接器将在目标文件之前继续执行库,并且链接器将放弃库中的所有函数,因为到目前为止,它不知道需要它们。只有稍后,通过处理您的目标文件,它才会知道确实需要库中的函数,但为时已晚。-v
-lgsl
-lgsl
评论