AR# 51605

13.x - スタンドアロンの makefile を使用するとリンカーで実行ファイルがリンクされない

説明


リンカーによってコードの一部が再配置されないため、次のようなエラーが発生しているものと思われます。

mb-gcc -o fw_image1.elf new_test.o profinet.o ethernetip.o ethercat.o modbus.o webserver.o smtp.o -mlittle-endian -Wl,-EL -Wl,--gc-sections -Wl,-static -Wl,--oformat,elf32-microblazele -nostartfiles -nodefaultlibs -nostdlib -Wl,-L,../xilinx_iek_switch_install/lib -Wl,--start-group,-lSdaiPnOnly,-lextras,-ltarget,-lPROFINETStack,-lgcc,--end-group -Wl,-T,target.ld -Wl,-Map=ieksingle.map
../xilinx_iek_switch_install/lib\libSdaiPnOnly.a(pn_common.o): In function `set_device_mode_offline':
c:\cworkspace\CASE_929382_Dirk_linker_error\xilinx_lib\xilinx\SimpleDeviceAPI\all_fpga_eCos_gcc\mak\release/../../../sdai/protocol/user.c:2256: relocation truncated to fit: R_MICROBLAZE_32_PCREL_LO against symbol `user_sm_if_appl_get_alarm_ack_can_send' defined in .text section in ../xilinx_iek_switch_install/lib\libSdaiPnOnly.a(pn_common.o)
../xilinx_iek_switch_install/lib\libSdaiPnOnly.a(pn_common.o): In function `alarm_con':
c:\cworkspace\CASE_929382_Dirk_linker_error\xilinx_lib\xilinx\SimpleDeviceAPI\all_fpga_eCos_gcc\mak\release/../../../sdai/protocol/user.c:2113: relocation truncated to fit: R_MICROBLAZE_32_PCREL_LO against symbol `user_sm_switch_1_4_auto_read_res' defined in .text section in ../xilinx_iek_switch_install/lib\libSdaiPnOnly.a(pn_common.o)
../xilinx_iek_switch_install/lib\libSdaiPnOnly.a(pn_common.o): In function `user_connect_append_slot_diff':
c:\cworkspace\CASE_929382_Dirk_linker_error\xilinx_lib\xilinx\SimpleDeviceAPI\all_fpga_eCos_gcc\mak\release/../../../sdai/protocol/user_connect.c:1000: relocation truncated to fit: R_MICROBLAZE_32_PCREL_LO against symbol `user_util_find_module_list_element' defined in .text section in ../xilinx_iek_switch_install/lib\libSdaiPnOnly.a(pn_common.o)
collect2: ld returned 1 exit status
make: *** [fw_image1.elf] Error 1

グーグルで検索をし、次のような提案策が見つかりました。

「-mlong-calls」を使用することができる。

しかし、MicroBlaze / mb-gcc ではこれはオプションにないようです。

どうすればよいでしょうか。

ソリューション


この問題を回避するには、14.2 からの最新版コンパイラを使用してすべてを再コンパイルします。こうすると「relocation truncated to fit: R_MICROBLAZE_32_PCREL_LO against symbol」というメッセージは表示されず、実行ファイルを生成することができます。

ライブラリを再コンパイルせずにリンカーのみを実行しても問題は解決されません。
AR# 51605
日付 09/04/2012
ステータス アクティブ
種類 一般
ツール