尝试使用外部库进行编译时出错

时间:2013-07-26 18:16:03

标签: c++ linux gcc

我已下载mimetic library安装文件, 并遵循安装说明。

./configure

在检查一系列事物后创建make文件的脚本。

make 

编译cpp文件,此后不同的.o和.lo文件出现在原始文件夹中。

make install 

似乎做了很多,但我似乎唯一注意到的是一个模仿目录 出现在/ usr / local / include下的所有头文件。

比我尝试编译最简单的主文件: (如图书馆网站所提供的:original example

#include <mimetic/mimetic.h>

using namespace mimetic;

int main()
{
    MimeEntity me;
    return 0;
}

我正在使用以下命令进行编译(在CentOS 5.7上,gcc版本:4.1.2):

g++ mimetic.cpp

我得到的错误:

/tmp/ccWnsteO.o: In function `main':
mimetic.cpp:(.text+0x80): undefined reference to `mimetic::MimeEntity::MimeEntity()'
mimetic.cpp:(.text+0x91): undefined reference to `mimetic::MimeEntity::~MimeEntity()'
collect2: ld returned 1 exit status

据我所知,找到了头文件,但源/库本身 不见了。

MimeEntity构造函数声明出现在:/usr/local/include/mimetic/mimeentity.h 当我搜索 mimeentity 时,我得到以下内容:

/home/mimetic-0.9.7/mimetic/mimeentity.o
/home/mimetic-0.9.7/mimetic/mimeentity.h
/home/mimetic-0.9.7/mimetic/mimeentitylist.h
/home/mimetic-0.9.7/mimetic/mimeentity.cxx
/home/mimetic-0.9.7/mimetic/.libs/mimeentity.o
/home/mimetic-0.9.7/mimetic/mimeentity.lo
/home/mimetic-0.9.7/mimetic/.deps/mimeentity.Plo
/usr/local/include/mimetic/mimeentity.h
/usr/local/include/mimetic/mimeentitylist.h 

我尝试过使用库的搜索路径,但出现了同样的错误

g++ mimetic.cpp -L/home/mimetic-0.9.7/mimetic/

当我尝试编译主mimetic.cpp文件时,发生了一些奇怪的事情 与行

MimeEntity me;

更改为

MimeEntity me();

它编译。

2 个答案:

答案 0 :(得分:2)

您收到链接器错误只是因为编译测试源文件时没有引用库。它需要像:

g++ mimetic.cpp -l<libraryname>

添加大括号时编译的原因是你真的声明了一个名为'me'的函数,它返回一个MimeEntry。虽然它编译,但它没有做你想要的。

答案 1 :(得分:2)

用于构建模拟示例的命令似乎不完整。您正在指定库搜索补丁(-L),但不指定库本身。

  1. 确保-L选项指定了模仿库的位置
  2. 添加-l'the-name-of-mimetic-library'。我的猜测是-lmimetic
  3. 为标题的位置添加-I(即大写i)选项。