天嵌 ARM开发社区

 找回密码
 注册
查看: 3064|回复: 5

没有使用memcpy函数为什么提示memcpy未定义

[复制链接]
dreagonwoo 发表于 2014-8-13 15:33:40 | 显示全部楼层 |阅读模式
Makefile
all:
         arm-linux-gcc -g -nostdlib -fno-builtin -c main.c start.S
         arm-linux-ld -Tgboot.lds -o gboot.elf main.o start.o
         arm-linux-objcopy -O binary gboot.elf download.bin
         cp:
         cp gboot_cmain.bin /usr/armdebug
.PHONY: clean
clean:
         @-rm *.o *.elf *.bin

main.c
int main()
{
         char strout[] = "1234";//关键就在这里
         return 0;
}

编译,在连接过程出错
arm-linux-ld -Tgboot.lds -o gboot.elf main.o start.o
main.c:3: undefined reference to `memcpy'
==================================
char strout[] = "1234";删除可以编译通过。什么情况!!!!
是不是要修改gboot.lds文件

gboot.lds
OUTPUT_ARCH(arm)
ENTRY(_start)
SECTIONS {
. = 0x30000000;

. = ALIGN(4);
.text :
{
start.o (.text)
*(.text)
}

. = ALIGN(4);
.data :
{
*(.data)
}

. = ALIGN(4);
bss_start = .;
.bss :
{
*(.bss)
}
bss_end = .;
}


JaceLin 发表于 2014-8-18 13:57:25 | 显示全部楼层
试试包涵  string.h  ?  
回复

使用道具 举报

 楼主| dreagonwoo 发表于 2014-8-18 20:27:21 | 显示全部楼层
JaceLin 发表于 2014-8-18 13:57
试试包涵  string.h  ?

是编译器的C库问题
编译裸机程序到底使用【天嵌】提供的4.3.3,还是 crosstools_3.4.5_softfloat,貌似都有各种C库的错误
使用 crosstools_3.4.5_softfloat编译,如果调用sprintf等标准接口居然弹出

/opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux-ld: BFD 2.15 assertion fail /opt/crosstool/crosstool-0.43/build/arm-linux/gcc-3.4.5-glibc-2.3.6/binutils-2.15/bfd/elf32-arm.h:3905
make: *** [all] 段错误
红字是怎么回事,这个elf32-arm.h我系统根本就没有。而且红字的目录也不是我配置的。
是不是需要自己配置glibc,天谴提供的crosstool配置有问题???
回复

使用道具 举报

JaceLin 发表于 2014-8-18 21:15:37 | 显示全部楼层
你先不用glibc编,用eabi那个gcc,看下里面的 arm-linux-ld  文件链接对了没有?
回复

使用道具 举报

 楼主| dreagonwoo 发表于 2014-8-19 12:58:33 | 显示全部楼层
JaceLin 发表于 2014-8-18 21:15
你先不用glibc编,用eabi那个gcc,看下里面的 arm-linux-ld  文件链接对了没有?

/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/bin有个gcc,用它编译时候需要cc1,
cc1在目录
/opt/EmbedSky/4.3.3/libexec/gcc/arm-none-linux-gnueabi/4.3.3
用“./gcc -C” cc1的目录提示不支持-C选项,无奈将cc1拷贝到/usr/bin,编译
./gcc -o a.out tmp.c提示
as:无法识别的选项“-meabi=5”

现在正在看-meabi可以提供什么选项


另外我想问,天嵌提供的3个编译器,分别是哪来编译什么的
1、/opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux-gcc
2、/opt/EmbedSky/4.3.3/bin/arm-linux-gcc
3、/opt/EmbedSky/4.3.3/arm-none-linux-gnueabi/bin/gcc
特别是2和3,好像这两个gcc用-v查看,输出的东西是一样的???
回复

使用道具 举报

JaceLin 发表于 2014-8-19 18:25:07 | 显示全部楼层
1、/opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux-gcc
这个是glibc,GNU开发的

2、/opt/EmbedSky/4.3.3/...
这个是EABI,是另外一个公司开发的,用的是libc

回复

使用道具 举报

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

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-19 21:19 , Processed in 2.037987 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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