【问题标题】:linked ELF file contains no symbols链接的 ELF 文件不包含符号
【发布时间】:2016-09-16 09:14:01
【问题描述】:

我将我的 AVR C 源代码编译为目标文件。这些对象包含调试符号:

~ avr-nm code.c.o: 00000000 T ClockInit32MhzXtal 00000000 T CopyDataToSensors 00000000 T FindSensors U I2CInitMaster 00000000 T PC_UsartInit 00000000 T ReadFromSensorSettings 00000000 T ResetAndAlignSampleClock 00000000 T SampleClockTimerInit 00000000 T SendDataToPC ...

将所有文件链接到单个文件时,尽管我指定了 -g 选项,但这些符号似乎丢失了:

~ /usr/local/bin/avr-gcc -O1 -lm -Wall -Wstrict-prototypes -Wl,--gc-sections -Wl,-g -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -g -Wl,-search_paths_first -Wl,-headerpad_max_install_names -DF_CPU=32000000 -mmcu=atxmega128a1u file1.c.o file2.c.o -o program.elf /usr/local/opt/avr-binutils/bin/avr-ld: warning: cannot find entry symbol arch_paths_first; defaulting to 0000000000000000 ~ avr-nm program.elf avr-nm: program.elf: no symbols

这怎么可能?链接器不应该在链接文件中创建一个带有调试信息的新符号表吗?

avr-gcc: gcc version 4.9.3 (GCC) avr-ld: GNU ld (GNU Binutils) 2.25

【问题讨论】:

  • clawson at avrfreaks.net 解决。 -Wl,search_paths_first 被误解为 -Wl,search_paths_first,因为 avr-ld 中不存在 search_paths_first 选项。此选项是由配置错误的 CMake 配置自动添加的。 avrfreaks.net/comment/1985241#comment-1985241
  • 您可能应该删除(这不太可能对其他人有帮助)或回答这个问题。

标签: gcc linker avr


【解决方案1】:

-Wl,-search_paths_first 标志由 CLion 添加。然而,它不是有效的 avr-gcc 标志,而是典型的 OS X 标志。编译器试图找到第一个现有的匹配项-Wl,-s。 IE。剥离符号。

【讨论】:

    猜你喜欢
    • 2011-02-27
    • 2020-04-06
    • 2017-02-17
    • 2012-07-08
    • 1970-01-01
    • 2018-09-02
    • 2011-07-23
    • 1970-01-01
    • 2012-12-14
    相关资源
    最近更新 更多