嵌入式爱好者

查看: 29191|回复: 13

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

  [复制链接]

9

主题

27

帖子

166

积分

A40i/T3/T507/T527通行证i.MX6UL通行证i.MX6Q通行证

扫一扫,手机访问本帖
发表于 2019-4-9 17:39:03 | 显示全部楼层 |阅读模式
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环境后仅做了一些错误修改。

回复

使用道具 举报

1

主题

3670

帖子

4157

积分

发表于 2019-4-10 10:26:54 | 显示全部楼层
你好参考图中添加参数 20190410102300.png

希望能帮到您

点评

我的环境是OKMX6DL-S3型开发板,主芯片是iMX6DL,工业级。 使用arm-poky-linux-gnueabi-gcc编译了一个程序 代码如下: #include #include int main(void) { printf("1st app run on iMX6\n");  详情 回复 发表于 2019-5-5 21:35
你好,我怀疑是$SDKTARGETSYSROOT定义的原因,您那里的$SDKTARGETSYSROOT在哪里定义呢?怎么定义的? 因为下载的Ubuntu环境中的编译器用的是4.1.15-2.1.0目录的,而我定义的sysroot指向4.1.15-2.0.0目录,所以编  详情 回复 发表于 2019-4-10 14:50
你好,多谢回复。 不过这个我增加过了,不过因为$SDKTARGETSYSROOT似乎不起作用(没定义?)我改成以下做法: --sysroot=/opt/fsl-imx-x11/4.1.15-2.0.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/ -mfloat-ab  详情 回复 发表于 2019-4-10 10:43
技术支持电话:0312-3119192
技术支持邮箱:Android@forlinx.com
点评回复 支持 反对

使用道具 举报

9

主题

27

帖子

166

积分

A40i/T3/T507/T527通行证i.MX6UL通行证i.MX6Q通行证

 楼主| 发表于 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
现在编译能编译了,只是在链接的时候出来了上面的错误信息。
点评回复 支持 反对

使用道具 举报

9

主题

27

帖子

166

积分

A40i/T3/T507/T527通行证i.MX6UL通行证i.MX6Q通行证

 楼主| 发表于 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++的那些头文件,这是个矛盾
点评回复 支持 反对

使用道具 举报

1

主题

3670

帖子

4157

积分

发表于 2019-4-10 17:24:15 | 显示全部楼层
automake 发表于 2019-4-10 14:50
你好,我怀疑是$SDKTARGETSYSROOT定义的原因,您那里的$SDKTARGETSYSROOT在哪里定义呢?怎么定义的?

...

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

点评

你好,怎么让gcc编译不用加参数--sysroot=$SDKTARGETSYSROOT -mfloat-abi=hard 以前用(QT 4.8.5)Linux3.0.35版本的开发环境的时候,那个arm的gcc就不用加参数直接编译  详情 回复 发表于 2019-4-11 15:17
用户说明里只是说执行: . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi 我执行过了,但是--sysroot=$SDKTARGETSYSROOT -mfloat-abi=hard参数还是没用,看环境变量里也没  详情 回复 发表于 2019-4-11 13:41
技术支持电话:0312-3119192
技术支持邮箱:Android@forlinx.com
点评回复 支持 反对

使用道具 举报

9

主题

27

帖子

166

积分

A40i/T3/T507/T527通行证i.MX6UL通行证i.MX6Q通行证

 楼主| 发表于 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是怎么定义的吗?
点评回复 支持 反对

使用道具 举报

9

主题

27

帖子

166

积分

A40i/T3/T507/T527通行证i.MX6UL通行证i.MX6Q通行证

 楼主| 发表于 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就不用加参数直接编译
点评回复 支持 反对

使用道具 举报

1

主题

3670

帖子

4157

积分

发表于 2019-4-12 09:20:43 | 显示全部楼层
automake 发表于 2019-4-11 15:17
你好,怎么让gcc编译不用加参数--sysroot=$SDKTARGETSYSROOT -mfloat-abi=hard
以前用(QT 4.8.5)Linux3. ...

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

点评

你好,gcc没问题  详情 回复 发表于 2019-4-12 10:59
技术支持电话:0312-3119192
技术支持邮箱:Android@forlinx.com
点评回复 支持 反对

使用道具 举报

9

主题

27

帖子

166

积分

A40i/T3/T507/T527通行证i.MX6UL通行证i.MX6Q通行证

 楼主| 发表于 2019-4-12 10:59:12 | 显示全部楼层
飞凌-chongzi 发表于 2019-4-12 09:20
你好 试一下用   $gcc 编译  不用加参数

你好,gcc没问题

点评

请问你的问题解决了吗,我也遇到了同样的问题  详情 回复 发表于 2019-4-20 12:53
点评回复 支持 反对

使用道具 举报

2

主题

3

帖子

20

积分

i.MX RT通行证i.MX6Q通行证

发表于 2019-4-20 12:53:16 | 显示全部楼层

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

点评

你是用命令行编译还是用codeblocks之类的集成环境编译?  详情 回复 发表于 2019-5-5 14:54
点评回复 支持 反对

使用道具 举报

9

主题

27

帖子

166

积分

A40i/T3/T507/T527通行证i.MX6UL通行证i.MX6Q通行证

 楼主| 发表于 2019-5-5 14:54:02 | 显示全部楼层
zhanqing1001 发表于 2019-4-20 12:53
请问你的问题解决了吗,我也遇到了同样的问题

你是用命令行编译还是用codeblocks之类的集成环境编译?
点评回复 支持 反对

使用道具 举报

1

主题

2

帖子

21

积分

i.MX6UL通行证i.MX6Q通行证

发表于 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.

点评

你这个和我的问题不一样,我那个是编译不成功。 段错误一般是指针问题,但你这个程序就不知道怎么回事了。  详情 回复 发表于 2019-5-6 16:23
点评回复 支持 反对

使用道具 举报

9

主题

27

帖子

166

积分

A40i/T3/T507/T527通行证i.MX6UL通行证i.MX6Q通行证

 楼主| 发表于 2019-5-6 16:23:21 | 显示全部楼层
DXKJ_001 发表于 2019-5-5 21:35
我的环境是OKMX6DL-S3型开发板,主芯片是iMX6DL,工业级。

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

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

使用道具 举报

0

主题

4

帖子

32

积分

AM335x通行证i.MX6Q通行证

发表于 2019-5-21 09:05:03 | 显示全部楼层
我怀疑官方给的开发环境有问题,每次虚拟机重启都需要配置一遍环境变量,编译也总是报找不到头文件的错
点评回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-11-22 21:23

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表