【问题标题】:Toolchain question: How do you add a header/lib so the compiler knows where to find it?工具链问题:如何添加头文件/库以便编译器知道在哪里找到它?
【发布时间】:2010-10-27 02:23:30
【问题描述】:

我已经使用这个脚本制作了一个工具链:http://gist.github.com/403608(或多或少修改以使其工作)

一切都已安装,现在当我尝试使用它进行编译时,当我 ./configure 时出现错误,它说我的 C 编译器无法创建可执行文件。我在想我的编译器只是不知道在哪里寻找所有的头文件和库......因为它们不在 /usr/ 他们在 /var/sdk/usr/

有没有办法告诉我的编译器也总是在 /var/sdk/usr/ 中查找?

【问题讨论】:

  • 你想告诉哪个编译器?

标签: iphone c linux compiler-construction toolchain


【解决方案1】:

大多数配置脚本使用LDFLAGSCPPFLAGS 环境变量来修改包含和库的目录搜索路径。

LDFLAGS="-L/other/libs" CPPFLAGS="-I/other/includes" ./configure

您还可以查看编译器文档,因为它们通常也会查看环境变量。例如 gcc 在列出的目录中查找 LIBRARY_PATH 的库。它还将查找目录CPATH 以查找包含内容。

【讨论】:

  • 我可以更改环境变量,然后像正常一样编译,只要将这些环境变量设置为那样,它就会看起来在那里吗?
  • 那些变量只用于配置和编译时间。您可能需要更新 ldconfig 和/或 LD_LIBRARY_PATH 以在运行时修改为共享库检查的目录。
【解决方案2】:

进入您的目标设置(按住 Control 单击目标并选择信息)。选择 Build 选项卡,然后填写 Header Search Paths for headers,Library Search Paths for libraries。

【讨论】:

  • 啊。你试过 ./configure --help 吗? configure 通常具有用于指定非标准依赖位置的命令行选项。
【解决方案3】:

对于 gcc,请使用 directory search options

gcc -L/foo/bar/baz gcc -I/foo/bar/quux

第一个将目录 /foo/bar/baz 添加到链接器搜索路径(libs 将在此处找到)。第二个将目录 /foo/bar/quux 添加到目录列表的 front 以搜索标题。混合和多个 -I 和 -L 选项可以出现在单个调用中。如果您使用多个“-I”,则按从左到右的顺序搜索它们,然后搜索系统目录。

【讨论】:

  • 这只是为了那个 ONE 编译还是它“坚持” - 就像在配置 GCC 以在未来总是看到那里一样?
  • @Jeremy Iglehart:只工作一次。但是您正在制作一个编译脚本或使用 make 或其他方法来自动执行此步骤,因此您只需弄清楚一次。我强烈建议不要更改您的所有时间环境,因为它在开发和生产环境之间产生了很大的差异。
猜你喜欢
  • 2021-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 2015-03-31
  • 1970-01-01
相关资源
最近更新 更多