一、問題
make[1]: 進入目錄“/home/leung/embed_linux_driver_tutorial_imx6_code-master/bare_metal/uart/device”
arm-none-eabi-gcc -fno-builtin -I/home/leung/embed_linux_driver_tutorial_imx6_code-master/bare_metal/uart/include -c led.c
arm-none-eabi-gcc -fno-builtin -I/home/leung/embed_linux_driver_tutorial_imx6_code-master/bare_metal/uart/include -c system_MCIMX6Y2.c
arm-none-eabi-gcc -fno-builtin -I/home/leung/embed_linux_driver_tutorial_imx6_code-master/bare_metal/uart/include -c clock.c
arm-none-eabi-gcc -fno-builtin -I/home/leung/embed_linux_driver_tutorial_imx6_code-master/bare_metal/uart/include -c uart.c
arm-none-eabi-ld -r led.o system_MCIMX6Y2.o clock.o uart.o -o device.o
make[1]: 離開目錄“/home/leung/embed_linux_driver_tutorial_imx6_code-master/bare_metal/uart/device”
arm-none-eabi-ld -Tbase.lds start.o main.o device/device.o -o base.elf -static -L /usr/lib/gcc/arm-none-eabi/6.3.1 -lgcc
arm-none-eabi-ld: cannot find -lgcc: 沒有那個文件或目錄
make: *** [makefile:9:all] 錯誤 1
二、原因
因為arm-none-eabi-gcc的版本比較高,不支持以上指令。
查看當前gcc版本:
arm-none-eabi-gcc -v
當前版本為10.3.1
三、解決方法
3.1 下載Linaro GCC
Linaro 是一間由ARM發起,與其它ARM SOC公司共同投資的非盈利性質的開放源代碼軟件工程公司,Linaro 開發了很多軟件,最著名的就是 Linaro GCC 編譯工具鏈(編譯器)。
官網下載:
【老版本,穩定版】https://releases.linaro.org/components/toolchain/binaries/
【新版本,開發版】https://snapshots.linaro.org/gnu-toolchain/
百度網盤:https://pan.baidu.com/s/1w7-PwMcCwXZpOhjfQYFxQg?pwd=2jh0 提取碼:2jh0
選擇版本號
選擇ARM架構類型
選擇具體的編譯器平臺
創建存放編譯器的目錄
sudo mkdir /usr/local/arm將編譯器復制到剛剛的目錄
sudo cp gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/ -f將編譯器工具進行解壓
sudo tar -vxf gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz修改環境變量,使編譯器永久生效
使用 VI 打開/etc/profile 文件:
sudo vi /etc/profile
打開/etc/profile 以后,在最后面輸入如下所示內容:
export PATH=$PATH:/usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin修改好以后就保存退出,重啟系統,交叉編譯工具鏈(編譯器)就安裝成功了
sudo reboot安裝完成后使用如下命令查看版本
arm-linux-gnueabihf-gcc –v如果是Linaro 4.9的老版本編譯器,還需要安裝額外的庫
sudo apt-get install lsb-core lib32stdc++6
3.2 修改makefile
使用 VIM 打開/embed_linux_driver_tutorial_imx6_code-master/bare_metal/uart/makefile 文件:
vim makefile將 libgcc_address := /usr/lib/gcc/arm-none-eabi/6.3.1 修改為 /usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/lib/gcc/arm-linux-gnueabihf/7.5.0
修改后:出現其他錯誤 undefined reference to `raise'
arm-none-eabi-ld -Tbase.lds start.o main.o device/device.o -o base.elf -static -L /usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/lib/gcc/arm-linux-gnueabihf/7.5.0 -lgcc
arm-none-eabi-ld: /usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/lib/gcc/arm-linux-gnueabihf/7.5.0/libgcc.a(_dvmd_lnx.o): in function `__aeabi_ldiv0':
/home/tcwg-buildslave/workspace/tcwg-make-release_1/snapshots/gcc.git~linaro-7.5-2019.12/libgcc/config/arm/lib1funcs.S:1545: undefined reference to `raise'
make: *** [makefile:9:all] 錯誤 1
在main.c中添加以下函數
int raise(void){ return 0;}
重新編譯成功
上一篇:IMX6ULL學習筆記(21)——MMDC接口使用(DDR3測試)
下一篇:IMX6ULL學習筆記(20)——UART串口使用
推薦閱讀最新更新時間:2025-05-16 10:55





設計資源 培訓 開發板 精華推薦
- CH55xT CORE
- LTC2992IDE-1 -48V 冗余饋電的典型應用,具有高達 200V 的瞬態保護(1.5kHz I2C 接口)
- AD780 的典型應用電路,來自單 5V 電源的 4.5V 基準
- DC1112A-1,用于 LTC2755 16 位、四路、SoftSpan、1LSB INL Iout DAC 的演示板
- LTC4441 的典型應用 - N 溝道 MOSFET 柵極驅動器
- LTC3603IUF 1.8V、2.5A 降壓穩壓器(1MHz、突發模式操作)的典型應用電路
- CN0189
- AP6502-EVM,基于 AP6502 340kHz 18V/2A 同步 DC-DC 降壓轉換器的評估板
- LTC4367IMS8-1 過壓電源保護控制器選擇兩個電源之一的典型應用
- EVAL-ADF4106EBZ1,用于 PoE 無線接入點的 ADF4106 PLL 時鐘發生器的評估板