【问题标题】:ld: library not found for - Eclipseld:找不到库 - Eclipse
【发布时间】:2014-12-27 19:33:30
【问题描述】:

我正在尝试使用 Eclipse 链接到第 3 方库。我已经构建了库,并使用属性/路径和符号/库指定了它在我的机器上的位置。从这个菜单中,我使用 gui 来选择 .a 文件的位置。但是,在运行时我仍然收到错误:

ld: library not found for -l/path_to_library_that_I_selected...

对可能导致此/尝试尝试的任何想法有什么想法吗?

干杯

【问题讨论】:

  • 添加库时,实际上并没有包含-l?
  • 命令是:g++ -o "output" ./src/output.o -l/sweetlibrary.a
  • 你真的有 sweetlibrary.a 位于根文件夹(直接在 / 下)吗?另外,如果需要将库文件名用作库,则必须以 lib 为前缀,因此其文件名应为 libsweetlibrary.a。
  • 好吧,你当然也可以在 linux 上随意调用它,但是你不能使用 -l 选项,并且必须在 Eclipse 中找到另一种方法来为链接添加额外的参数阶段。
  • 抱歉,根据问题,该命令中应该有一条到 sweet library 的路径

标签: c++ eclipse linker


【解决方案1】:

您可能需要添加 -L (CAPITAL L) 标志来指定库的路径,例如 -L /my/path/to/library (因为我相信它没有安装在 /usr/local/lib 这样的标准位置)。 -l 标志仅用于库的名称,而不是路径。转到 Project Options/C++ 链接器,然后您可以在“库”和“库搜索路径”下添加标志。

截图示例:

【讨论】:

  • 您添加了一个目录 以使用-L/some/path/dir/ 进行搜索,而不是单个库文件...
  • 是的,/some/path/dir/ 中的库应该对链接器可见,包括有问题的特定库(在 OS X 的情况下,您还应该将 DYLD_LIBRARY_PATH 指定为环境变量,但这是另一个故事...)您选择带有-l 标志的库。这有什么问题吗?
  • 好的,我已经完成了上述操作,但仍然是同样的错误。命令现在是 g++ -L/path -o "output" ./src/output.o -llibrary.a
  • @user3684792,库不需要lib前缀和.a后缀,只需将其添加为sweetlibraryLibraries下,然后在@987654332下指定其完整路径@。请参阅yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html 以获得简要介绍您的命令行可能应该是:g++ -L/path -llibrary -o "output" ./src/output.o
  • 只是尝试在命令行编译,看看它是否有效,不知道你的 eclipse 构建发生了什么
【解决方案2】:

项目 > 属性 > C/C++ 构建 > 设置 > 工具设置 > C++ 链接器 > 库

在库搜索路径 (-L) 下,输入 lib 文件所在文件夹的路径。 在 Libraries (-l) 下放置 lib 文件的名称,不要在文件名的开头或文件扩展名中包含“lib”前缀。

示例: 你想使用lib文件“usr/local/Cellar/opencv/3.4.2/lib/libopencv_ml.a” 在库搜索路径中放入“usr/local/Cellar/opencv/3.4.2/lib” 在库中放“opencv_ml”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-13
    • 2012-08-19
    • 2015-11-14
    • 2023-03-27
    • 1970-01-01
    • 2021-10-24
    • 2012-05-17
    • 2017-03-31
    相关资源
    最近更新 更多