Portál AbcLinuxu, 10. května 2025 06:48
Ahoj, hraju si s SDCC portem pro HC08 a poterbuji udelat novy "LNK" soubor primo z Makefile. Ten soubor ma vypadat jako sada parametru, kazdy na separatnim radku.
Pokud v Makefile pouziju nasledujici target - dostanu chybu:
main.linker: cat << EOF -myuxs
-Y
-b HOME = 0x8000
-b DSEG = 0x0080
-b BSEG = 0x0000
-k d:\v\sw\sdcc\lib\hc08
-k d:\V\sw\sdcc\bin\..\lib\hc08
-l hc08
main.rel
-e EOF > main.linker
Pokud na koncich pouziju backslashe, parametry skonci na jednom radku. Ma nekdo napad, jak ten soubor generovat primo z Makefile ?
Napr.
main.linker: echo -e "-myuxs\n\ -Y\n\ -b HOME = 0x8000\n\ -b DSEG = 0x0080\n\ -b BSEG = 0x0000\n\ -k d:\\\\v\sw\sdcc\lib\hc08\n\ -k d:\V\sw\sdcc\bin\..\lib\hc08\n\ -l hc08\n\ main.rel\n\ -e" > $@
To mi bohuzel udela jediny radek s "\n" textem:
-e "-myuxs\n-Y\n-b HOME = 0x8000\n-b DSEG = 0x0080\n-b BSEG = 0x0000\n-k d:\\\\v\sw\sdcc\lib\hc08\n-k d:\V\sw\sdcc\bin\..\lib\hc08\n-l hc08\nmain.rel\n-e"
Tedy, pouzivam gmake na Windows, mozna,ze bude problem i tam...
-e
).
Tak dejte na kazdy radek jedno echo.
main.linker: echo '-myuxs' > $@ echo '-Y' >> $@ echo '-b HOME = 0x8000' >> $@ echo '-b DSEG = 0x0080' >> $@ echo '-b BSEG = 0x0000' >> $@ ...
main.linker: @echo '-myuxs' > $@ @echo '-Y' >> $@ @echo '-b HOME = 0x8000' >> $@ @echo '-b DSEG = 0x0080' >> $@ @echo '-b BSEG = 0x0000' >> $@ ...
Takze nakonec to ve Windows funguje takto:
main.linker:
echo -myuxs> $@
echo -Y>> $@
echo -b HOME = 0xE000>> $@
echo -b DSEG = 0x0080>> $@
echo -b BSEG = 0x0000>> $@
echo -k d:\v\sw\sdcc\lib\hc08>> $@
Pravda, pod Linuxem to nebude zrejme korektni - to windowsi echo proste zopakuje vsechno, co nasleduje - zadna interpretace parametru, nic...
Diky za napady,
V.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.