crti.o file missing
我正在使用GNU工具链构建一个项目,在我将其链接之前,一切正常,链接器抱怨该链接丢失/找不到 我正在交叉编译手臂平台。 我的工具链中有文件,但是如何使链接器包含它?
如果您正在运行二进制发行版,它们倾向于将所有开发人员的资料放入-dev软件包(例如libc6-dev)中,因为运行编译的程序并不需要构建它们。 您不是交叉编译的吗?
如果您要交叉编译,通常是gcc的搜索路径与crti.o所在位置不匹配的问题。它应该在工具链建立时就已构建。首先要检查的是 链接实际上是由ld完成的,但是它的路径是由gcc传递给它的。找出最新情况的最快方法是编译helloworld.c程序并跟踪它,以查看将什么传递给ld并查看正在发生的情况。
打开日志文件并搜索crti.o,您会看到我的非交叉编译器:
如果您看到一堆尝试
我在交叉编译时遇到了同样的问题。 crti.o位于
事实证明,创建一个空目录 这是链接器中的错误吗?还是在某处记录了这种行为?
对于我的
我什么也没找到,所以我安装了开发人员软件包:
如果您发现一些库,请在这里阅读 如果您是交叉编译,请在LDFLAGS中添加sysroot选项 export LDFLAGS ="-sysroot = $ {SDKTARGETSYSROOT}" -L $ {SDKTARGETSYSROOT} / lib -L ??$ {SDKTARGETSYSROOT} / usr / lib -L ??$ {SDKTARGETSYSROOT} / usr / lib / arm-poky-linux-gnueabi / 5.3.0" 设置错误的交叉编译器遇到了类似的问题。我这样绕过它:
假定sysroot选项指向的位置中存在/ lib,/ usr / include等。这可能不是应该做的事情,但是当我需要编译一个简单的C文件时,这使我摆脱了麻烦。 好的,我必须重新安装工具链,以便随后包括缺少的文件。似乎很奇怪,因为它应该在gcc路径上找到它。我猜的主要问题是我的计算机上有15个左右的crti.o文件,但没有指向正确的文件。从那以后仍然没有,但是现在可以了:-)感谢您的帮助:-) 这为我解决了(为ARM交叉编译pjsip):
我在默认的Ubuntu 8.04安装上遇到了同样的问题。我必须手动获取libc开发人员标头/文件才能运行。 |