2013-10-24 31 views
0

我安装libmcrypt我的系统上使用以下命令: -安装一个库,以便C++编译器可以直接访问它

[email protected]:~/Documents/network_lab/tut7$ cd libmcrypt-2.5.8 
[email protected]:~/Documents/network_lab/tut7/libmcrypt-2.5.8$ ./configure --prefix=/usr --disable-posix-threads 
[email protected]:~/Documents/network_lab/tut7/libmcrypt-2.5.8$ make 
[email protected]:~/Documents/network_lab/tut7/libmcrypt-2.5.8$ sudo make install 

结果头去到/ usr/include和库到/ usr/lib目录下。现在,当我包括< mcrypt.h>成libmcrypt提供.cpp文件,并使用函数,编译宣布

/tmp/ccCot4nH.o: In function `main': 
q3.cpp:(.text+0x64): undefined reference to `mcrypt_module_open' 
q3.cpp:(.text+0xb9): undefined reference to `mcrypt_generic_init' 
q3.cpp:(.text+0xd6): undefined reference to `mcrypt_generic' 
q3.cpp:(.text+0x110): undefined reference to `mdecrypt_generic' 
q3.cpp:(.text+0x13a): undefined reference to `mcrypt_generic_deinit' 
q3.cpp:(.text+0x147): undefined reference to `mcrypt_module_close' 
collect2: ld returned 1 exit status 

可有人告诉我问题出在哪里?安装过程有问题吗?

+0

你介意从命令行显示你的编译器/链接器调用吗? –

回答

2

包含库的头文件仅提供声明,以便编译器知道函数签名和全局变量类型,但是还需要向链接程序指示程序要与之动态链接的库。

对于大多数编译器,使用-l标志,后面跟着库的名称,前面没有lib前缀。例如,你的链接命令可能看起来像这样:

g++ -o myprogram obj1.o obj2.o ... obj.o -lmcrypt 
相关问题