关于修复这个'eclipse cdt -l error'的任何想法

时间:2013-01-04 19:04:54

标签: arduino eclipse-cdt avr

我正在尝试将我的AVR交叉目标应用程序链接到我的AVR交叉目标库。 该库名为Lib328P,应用程序名为LibTest。我已经构建了库并验证了文件系统中存在.a。

我试图通过右键单击项目来链接库>单击C / C ++ Build>设置> AVR C ++链接器>库将Lib328P添加到-l类别和“$ {workspace_loc:/ Lib328P}” 到-L类别

以下是控制台的输出。

**** Build of configuration Debug for project LibTest ****
 make all 
 Building target: LibTest.elf
 Invoking: AVR C++ Linker
 avr-g++ -Wl,-Map,LibTest.map,--cref -L"C:\Users\kempsa\indigo_workspace\Lib328P" -mmcu=atmega328p -o "LibTest.elf"  ./something.o   -lLib328P
 c:/arduino-0023/hardware/tools/avr/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: cannot find -lLib328P
 make: *** [LibTest.elf] Error 1

 **** Build Finished ****

我查看了其他帖子,他们建议删除lib和.a后缀。我已经这样做了。任何帮助将不胜感激。

谢谢! 萨姆

1 个答案:

答案 0 :(得分:1)

在您的情况下,链接器期望找到文件:

C:\用户\ kempsa \ indigo_workspace \ Lib328P \ libLib328P.a

你确定它出现在那个地方吗?或者它是在子文件夹中,可能是Release或 调试?


这是适合我的过程:

添加要与您的计划关联的库时,您可以输入两个条目。通过导航到:

,可以在项目属性页面上找到这些条目

C / C ++ Build>设置

在右侧窗格中,请务必在顶部下拉框中选择您正在构建的任何配置。 (偶尔我会对错误的配置进行更改,并想知道为什么这些更改似乎没有发生。)

在“工具设置”选项卡上是导航树。在该树上,选择

AVR C ++链接器>库

在右侧窗格中有两个列表框:Libraries and Libraries Path。这些是您添加两个条目的地方。

1 ..在顶部框中,单击加号或+图标。在这里只输入库基本名称。这是没有“lib”且没有“.a”

的库名

例如,我有一个“LibCore328v101” 这将导致链接器查找文件“libLibCore328v101.a”

2 ..在底部框中,单击加号或+图标。在这里添加查找该库文件的路径。

2a上。您只需键入包含.a文件的文件夹的路径即可。

2B。您可以单击“工作空间...”按钮并导航到包含库的文件夹。如果将库和程序保存在同一工作区中,则这是指定路径的更好方法。我使用它,在我的例子中创建了这个文本

“$ {workspace_loc:/ LibCore328v101 /推出}”

这实际上是图书馆的相对路径。这意味着您可以创建工作区的完整副本,并且所有库包含仍然是正确的。

当您在控制台窗口中看到链接器输出时,您应该看到两个选项。在我的例子中,这些是:

-lLibCore328v101(小写字母) -L“F:\ arduino-src \ tt-wb-trunk-hg \ LibCore328 \ Release”(大写字母)

您可以看到Eclipse插件已将相对路径转换为当前绝对路径。链接器将在内部将“lib”和“.a”添加到库名称。

您可以重复此过程,根据需要添加尽可能多的库和路径。

对于多目标程序,可以为每个构建目标创建不同的配置。因此,不是Debug和Release,而是“DebugNano”“DebugTiny”等。对于每个配置,更改库的路径。