2010-05-18 89 views
0

我对MAC操作系统有点新,但在MAC OS X上使用g ++构建cpp应用程序时,出现了链接器的奇怪错误。在MAC操作系统上的链接错误

首先在一步我创建一个库,使用从cpp源生成的几个对象文件,然后使用ar rvs命令创建单个存档。

如果我将此库链接到另一个使用库提供的某些类的cpp应用程序,它将无法在链接中获取某些符号并引发未定义的符号错误。

我知道,我可以使用nm在库中看到这些符号。并且签名和字符串完全匹配它在.a文件中的方式。

还有很多其他的符号,这个库提供并获得链接时识别。用于连接

选项是

 g++-framework IOKit -framework Carbon -L <> -l<lib>-L -l<lib> -o exe ./obj.o 

和其他使用-L

对于其他库的若干路径我不是MAC专家,但是从成员的任何建议将是明显的。

预先感谢

-brij

+0

复制并粘贴实际的命令行和生成的错误消息 – 2010-05-18 18:09:59

回答

0

连接时,您需要的库之前把目标文件(obj.o)。

其原因在于,在处理对象时,链接器会保留未定义符号的列表。当它处理一个库时,它会添加它在库中找到的所有当前未定义的符号(从技术上说,它在库中的对象级别上工作)。通过首先放置库,在处理它们时不会定义任何符号,因此不会添加库中的对象。