automake 发表于 2019-4-9 17:39:03

这个编译链接问题怎么解决(OKMX6UL-C(eMMC、Nand版)_Qt5.6+Linux4.1.15)

OKMX6UL-C(eMMC、Nand版)_Qt5.6+Linux4.1.15的ubuntu环境
程序编译没问题,在最后链接的时候出现以下问题:
ld||cannot find crt1.o: No such file or directory|
ld||cannot find crti.o: No such file or directory|
ld||cannot find crtbegin.o: No such file or directory|
ld||cannot find -lstdc++|
ld||cannot find -lm|
ld||cannot find -lgcc_s|
ld||cannot find -lgcc|
ld||cannot find -lc|
ld||cannot find -lgcc_s|
ld||cannot find -lgcc|
ld||cannot find crtend.o: No such file or directory|
ld||cannot find crtn.o: No such file or directory|
||error: ld returned 1 exit status|
||=== Build failed: 13 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|



这个程序在以前的OKMX6Q-C、OKMX6DL-C 的(QT 4.8.5)Linux3.0.35上是没问题的,移植到
Qt5.6+Linux4.1.15环境后仅做了一些错误修改。

飞凌-chongzi 发表于 2019-4-10 10:26:54

你好参考图中添加参数

希望能帮到您

automake 发表于 2019-4-10 10:43:15

飞凌-chongzi 发表于 2019-4-10 10:26
你好参考图中添加参数

希望能帮到您

你好,多谢回复。
不过这个我增加过了,不过因为$SDKTARGETSYSROOT似乎不起作用(没定义?)我改成以下做法:
--sysroot=/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/ -mfloat-abi=hard

在增加这个参数之前,编译报的错误是stdlib.h之类的头文件找不到,后来我在论坛内搜索到要添加参数
--sysroot=$SDKTARGETSYSROOT -mfloat-abi=hard;
但我加了以后没效果,后来发现$SDKTARGETSYSROOT似乎没定义,我就改成了
--sysroot=/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/ -mfloat-abi=hard
现在编译能编译了,只是在链接的时候出来了上面的错误信息。

automake 发表于 2019-4-10 14:50:03

飞凌-chongzi 发表于 2019-4-10 10:26
你好参考图中添加参数

希望能帮到您

你好,我怀疑是$SDKTARGETSYSROOT定义的原因,您那里的$SDKTARGETSYSROOT在哪里定义呢?怎么定义的?

因为下载的Ubuntu环境中的编译器用的是4.1.15-2.1.0目录的,而我定义的sysroot指向4.1.15-2.0.0目录,所以编译后链接有问题,但是4.1.15-2.1.0相应目录中又没有C/C++的那些头文件,这是个矛盾

飞凌-chongzi 发表于 2019-4-10 17:24:15

automake 发表于 2019-4-10 14:50
你好,我怀疑是$SDKTARGETSYSROOT定义的原因,您那里的$SDKTARGETSYSROOT在哪里定义呢?怎么定义的?

...

你参考用户手册 设置环境变量章节 试一下

automake 发表于 2019-4-11 13:41:58

飞凌-chongzi 发表于 2019-4-10 17:24
你参考用户手册 设置环境变量章节 试一下

用户说明里只是说执行:
. /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
我执行过了,但是--sysroot=$SDKTARGETSYSROOT -mfloat-abi=hard参数还是没用,看环境变量里也没有$SDKTARGETSYSROOT的定义,你能看一下你那里$SDKTARGETSYSROOT是怎么定义的吗?

automake 发表于 2019-4-11 15:17:00

飞凌-chongzi 发表于 2019-4-10 17:24
你参考用户手册 设置环境变量章节 试一下

你好,怎么让gcc编译不用加参数--sysroot=$SDKTARGETSYSROOT -mfloat-abi=hard
以前用(QT 4.8.5)Linux3.0.35版本的开发环境的时候,那个arm的gcc就不用加参数直接编译

飞凌-chongzi 发表于 2019-4-12 09:20:43

automake 发表于 2019-4-11 15:17
你好,怎么让gcc编译不用加参数--sysroot=$SDKTARGETSYSROOT -mfloat-abi=hard
以前用(QT 4.8.5)Linux3. ...

你好 试一下用   $gcc 编译不用加参数

automake 发表于 2019-4-12 10:59:12

飞凌-chongzi 发表于 2019-4-12 09:20
你好 试一下用   $gcc 编译不用加参数

你好,gcc没问题

zhanqing1001 发表于 2019-4-20 12:53:16

automake 发表于 2019-4-12 10:59
你好,gcc没问题

请问你的问题解决了吗,我也遇到了同样的问题

automake 发表于 2019-5-5 14:54:02

zhanqing1001 发表于 2019-4-20 12:53
请问你的问题解决了吗,我也遇到了同样的问题

你是用命令行编译还是用codeblocks之类的集成环境编译?

DXKJ_001 发表于 2019-5-5 21:35:51

飞凌-chongzi 发表于 2019-4-10 10:26
你好参考图中添加参数

希望能帮到您

我的环境是OKMX6DL-S3型开发板,主芯片是iMX6DL,工业级。

使用arm-poky-linux-gnueabi-gcc编译了一个程序
代码如下:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    printf("1st app run on iMX6\n");
    return 0;
}


按照论坛里面的要求,增加了编译参数为--sysroot=$SDKTARGETROOT -mfloat-abi=hard,后编译通过,通过FTP放到了板子上,运行结果为

segmantation fault.

automake 发表于 2019-5-6 16:23:21

DXKJ_001 发表于 2019-5-5 21:35
我的环境是OKMX6DL-S3型开发板,主芯片是iMX6DL,工业级。

使用arm-poky-linux-gnueabi-gcc编译了一个 ...

你这个和我的问题不一样,我那个是编译不成功。
段错误一般是指针问题,但你这个程序就不知道怎么回事了。

ysahn 发表于 2019-5-21 09:05:03

我怀疑官方给的开发环境有问题,每次虚拟机重启都需要配置一遍环境变量,编译也总是报找不到头文件的错
页: [1]
查看完整版本: 这个编译链接问题怎么解决(OKMX6UL-C(eMMC、Nand版)_Qt5.6+Linux4.1.15)