我使用以下命令在我的系统上安装了libmcrypt: -
avinash@ak-pc:~/Documents/network_lab/tut7$ cd libmcrypt-2.5.8
avinash@ak-pc:~/Documents/network_lab/tut7/libmcrypt-2.5.8$ ./configure --prefix=/usr --disable-posix-threads
avinash@ak-pc:~/Documents/network_lab/tut7/libmcrypt-2.5.8$ make
avinash@ak-pc:~/Documents/network_lab/tut7/libmcrypt-2.5.8$ sudo make install
结果标题转到/ usr / include,库转到/ usr / lib。现在,当我包括< mcrypt.h>进入.cpp文件并使用libmcrypt提供的函数,编译器宣布
/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