安装一个库,以便c ++编译器可以直接访问它

时间:2013-10-24 07:34:44

标签: c++ install libraries

我使用以下命令在我的系统上安装了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

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

1 个答案:

答案 0 :(得分:2)

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

对于大多数编译器,使用-l标志后跟库的名称,不带lib前缀。例如,您的链接命令可能如下所示:

g++ -o myprogram obj1.o obj2.o ... obj.o -lmcrypt