使用 ARM 编译器 6 编译和链接时的标准 C 库链接器问题。

问题描述 投票:0回答:1

我在ARM DS IDE中遇到了一些链接器的问题,我正在尝试用ARM编译器6为ARMVv-8架构、Cortex A72处理器构建代码,我认为这些错误与标准库有关,如stdio.h、math.h,这些错误不应该出现,因为链接器总是在Linux机器上寻找标准库的路径。

我认为这些错误与标准库有关,如stdio.h,math.h,这些错误不应该出现,因为链接器总是在Linux机器上寻找标准库的路径。

我是不是遗漏了什么,或者是编译器、链接器出了什么问题?

Building target: fresample.axf
Invoking: Arm Linker 6
armlink --userlibpath=/usr/lib/x86_64-linux-gnu --info=sizes -o "fresample.axf"  ./src/audio.o ./src/audio_format.o ./src/audio_rate.o ./src/audio_raw_load.o ./src/audio_wav_check.o ./src/audio_wav_load.o ./src/audio_wav_save.o ./src/common.o ./src/file.o ./src/main.o ./src/riff.o  ./lib/cpu.o ./lib/filter_delay.o ./lib/filter_free.o ./lib/filter_get.o ./lib/filter_new.o ./lib/filter_new_window.o ./lib/info_name.o ./lib/param.o ./lib/param_name.o ./lib/resample.o ./lib/resample_s16func.o ./lib/resample_s16n1f32_altivec.o ./lib/resample_s16n1f32_scalar.o ./lib/resample_s16n1f32_sse2.o ./lib/resample_s16n1s16_altivec.o ./lib/resample_s16n1s16_scalar.o ./lib/resample_s16n1s16_sse2.o ./lib/resample_s16n2f32_altivec.o ./lib/resample_s16n2f32_scalar.o ./lib/resample_s16n2f32_sse2.o ./lib/resample_s16n2s16_altivec.o ./lib/resample_s16n2s16_scalar.o ./lib/resample_s16n2s16_sse2.o ./lib/swap16.o ./lib/swap16_scalar.o   
Error: L6218E: Undefined symbol stderr (referred from common.o).
Error: L6218E: Undefined symbol close (referred from file.o).
Error: L6218E: Undefined symbol fstat (referred from file.o).
Error: L6218E: Undefined symbol mmap (referred from file.o).
Error: L6218E: Undefined symbol munmap (referred from file.o).
Error: L6218E: Undefined symbol open (referred from file.o).
Error: L6218E: Undefined symbol read (referred from file.o).
Error: L6218E: Undefined symbol __assert_fail (referred from main.o).
Error: L6218E: Undefined symbol getopt_long (referred from main.o).
Error: L6218E: Undefined symbol optarg (referred from main.o).
Error: L6218E: Undefined symbol optind (referred from main.o).
Error: L6218E: Undefined symbol optopt (referred from main.o).
Error: L6218E: Undefined symbol stdout (referred from main.o).
Error: L6218E: Undefined symbol __exp_finite (referred from filter_new.o).
Error: L6218E: Undefined symbol __log_finite (referred from filter_new.o).
Error: L6218E: Undefined symbol __pow_finite (referred from filter_new.o).
Error: L6218E: Undefined symbol __sqrt_finite (referred from filter_new.o).
Finished: 0 information, 0 warning and 17 error messages.
make: *** [makefile:33: fresample.axf] Error 1
"make all" terminated with exit code 2. Build might be incomplete.
c linux stdio math.h armclang
1个回答
0
投票

我认为没有必要指定 libpath 在你的情况下。Arm编译器默认自带C语言库。


0
投票

要使用ARM编译器6构建Linux应用程序,必须要有GCC:原因是ARM编译器6不包含Linux库,所以需要使用GCC的glibc。

这里是链接。https:/community.arm.comdevelopertools-softwaretoolsbtools-software-ides-blogpostsbuilding-an-armv8-linux-hello-world-with-arm-compiler-6。

© www.soinside.com 2019 - 2024. All rights reserved.