GNU as не принимает флаг при вызове из make-файла, но хорошо при вводе вручную - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь восстановить проект, который я был вынужден отложить на задний план несколько лет назад, когда M68HC12 был действующим. Я вложил 1000 долларов в создание прототипов, поэтому не хочу начинать с нового чипа, поскольку он является концептуальным проектом.

Попытка загрузить копию m6811-elf-gcc для нового ноутбука DevХорошо, но патчи binutils для веб-сайта 68HC11 404-х и нигде больше не найдены, поэтому я просто скопировал двоичные файлы из резервной копии предыдущего ноутбука dev.

Я использую SuSE linux LEAP 15.0. gcc 7.4.1 и как 2.31.1.20180828-lp150.5.3.

Я продолжал получать 'as: нераспознанный параметр' -m68hc12 '', поэтому я скопировал m6811-elf-as из резервной копии и поместил его в путь. Я все еще получаю ту же ошибку от , что и .

Расшифровывая вывод команды make, я вижу, что она вызывает версию m6811 как:

make -n дает (частично)

но когда я вручную набираю ту же строку, что и make, говорит, что он генерирует, он отлично работает с исходным кодом cc без ошибки «as: unrecognized option» -m68hc12 ».

Таким образом, make говорит, что он выполняет эту строку и получает ошибки, но сама строка этого не делает, когда вводится вручную.

Есть идеи?

любая помощь очень ценится!

Найджел Джонсон

обновление 15 октября: я согласен с тем, что вы говорите, но я не могу понять, как он может вывести m6811-elf-gcc с опцией -n и действительно вызывать как!

Вот вывод make:

T430:/home/nigel/Project - RPT # make
m6811-elf-gcc -m68hc12 -mshort -g -O3 -fno-ident -fno-common -fomit-frame- 
pointer -mrelax -mlong-calls -msoft-reg-count=0 -Wall   -c -o main.o 
main.c
main.c:102: warning: return type defaults to `int'
main.c: In function `main':
main.c:133: warning: implicit declaration of function `atdinit'
main.c:149: warning: control reaches end of non-void function
as: unrecognized option '-m68hc12'
make: *** [<builtin>: main.o] Error 1
T430:/home/nigel/Project - RPT # 

Вот make -n:

T430:/home/nigel/Project - RPT # make -n   
m6811-elf-gcc -m68hc12 -mshort -g -O3 -fno-ident -fno-common -fomit-frame-pointer -mrelax -mlong-calls -msoft-reg-count=0 -Wall   -c -o main.o main.c                                           
m6811-elf-gcc -m68hc12 -mshort -g -O3 -fno-ident -fno-common -fomit-frame-pointer -mrelax -mlong-calls -msoft-reg-count=0 -Wall   -c -o tasks.o tasks.c                                         
m6811-elf-gcc -m68hc12 -mshort -g -O3 -fno-ident -fno-common -fomit-frame-pointer -mrelax -mlong-calls -msoft-reg-count=0 -Wall   -c -o dtmf.o dtmf.c                                           
m6811-elf-ld -o mcx12.elf -mm68hc12elfb -defsym vectors_addr=0xff80 --relax -L/usr/lib/gcc-lib/m6811-elf/3.3.6-m68hc1x-20060122/m68hc12/mlong-calls/ 
crt0.o mcx12.o main.o tasks.o dtmf.o  -lgcc  
m6811-elf-objcopy  -O srec --srec-len=32 --change-section-lma .text+0xF0000 --change-section-lma .rodata+0xF0000 --change-section-lma .data+0xF0000 --change-section-lma .vectors+0xF0000 mcx12.elf mcx12.s19                                                                                                                                                                                   
m6811-elf-objdump  -S -D mcx12.elf>mcx12.dis                                                                                                                                                    
m6811-elf-size     mcx12.elf                                                                                                                                                                    
T430:/home/nigel/Project - RPT #             

и мои команды без ошибок для выводаНебольшой файл ассемблера:

T430:/home/nigel/Project - RPT # m6811-elf-as crt0.s -m68hc12                                                                                                                                   
T430:/home/nigel/Project - RPT # m6811-elf-as crt0.s -m68hc12

Обновление 2019-10-18:

ОК, добавил, что в make-файл, и теперь make-файл говорит:

m6811-elf-gcc -v -m68hc12 -mshort -g -O3 -fno-ident -fno-common -fomit-frame-pointer -mrelax -mlong-calls -msoft-reg-count=0 -Wall   -c -o main.o main.c
m6811-elf-gcc -v -m68hc12 -mshort -g -O3 -fno-ident -fno-common -fomit-frame-pointer -mrelax -mlong-calls -msoft-reg-count=0 -Wall   -c -o tasks.o tasks.c
m6811-elf-gcc -v -m68hc12 -mshort -g -O3 -fno-ident -fno-common -fomit-frame-pointer -mrelax -mlong-calls -msoft-reg-count=0 -Wall   -c -o dtmf.o dtmf.c
m6811-elf-ld -o mcx12.elf -mm68hc12elfb -defsym vectors_addr=0xff80 --relax -L/usr/lib/gcc-lib/m6811-elf/3.3.6-m68hc1x-20060122/m68hc12/mlong-calls/ crt0.o mcx12.o main.o tasks.o dtmf.o  -lgcc
m6811-elf-objcopy  -O srec --srec-len=32 --change-section-lma .text+0xF0000 --change-section-lma .rodata+0xF0000 --change-section-lma .data+0xF0000 --change-section-lma .vectors+0xF0000 mcx12.elf mcx12.s19
m6811-elf-objdump  -S -D mcx12.elf>mcx12.dis
m6811-elf-size     mcx12.elf
T430:/home/nigel/Project - RPT # 

НО:вывод make теперь говорит:

make
m6811-elf-gcc -v -m68hc12 -mshort -g -O3 -fno-ident -fno-common -fomit-frame-pointer -mrelax -mlong-calls -msoft-reg-count=0 -Wall   -c -o main.o main.c
Reading specs from /usr/lib/gcc-lib/m6811-elf/3.3.6-m68hc1x-20060122/specs
Reading specs from /usr/lib/gcc-lib/m6811-elf/specs
Configured with: ./configure --target=m6811-elf --program-prefix=m6811-elf- --enable-languages=c,c++,ada --prefix=/usr --host=i686-linux
Thread model: single
gcc version 3.3.6-m68hc1x-20060122 /usr/lib/gcc-lib/m6811-elf/3.3.6-m68hc1x-20060122/cc1 -quiet -v -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=6 -Dmc68hc1x -D__mc68hc1x__ -D__mc68hc1x -D__HAVE_SHORT_INT__ -D__INT__=16 -Dmc6812 -DMC6812 -Dmc68hc12 -D__USE_RTC__main.c -quiet -dumpbase main.c -m68hc12 -mshort -mrelax -mlong-    calls -msoft-reg-count=0 -auxbase-strip main.o -g -O3 -Wall -version -fno-dent -fno-common -fomit-frame-pointer -o /tmp/cc0exwc0.s
GNU C version 3.3.6-9s12x-20120502 (m68hc11-elf)
    compiled by GNU C version 4.5.1 20100924 (Red Hat 4.5.1-4).
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/lib/gcc-lib/m68hc11-elf/3.3.6-9s12x-20120502/include"
ignoring nonexistent directory "/usr/m68hc11-elf/sys-include"
#include "..." search starts here:
#include <...> search starts here: /usr/m68hc11-elf/include
End of search list.
main.c:102: warning: return type defaults to `int'
main.c: In function `main':
main.c:133: warning: implicit declaration of function `atdinit'
main.c:149: warning: control reaches end of non-void function   
as -m68hc12 -mshort -mlong-double -o main.o /tmp/cc0exwc0.
as: unrecognized option '-m68hc12'
make: *** [<builtin>: main.o] Error 1  
T430:/home/nigel/Project - RPT # 

Я изучу эти несуществующие каталоги и посмотрю, что произойдет, если я скопирую их из резервной копии: -)

...