Ich bin verpflichtet, objcopy
zu verwenden, um eine Binärdatei einer Textdatei in eine ausführbare Datei einzuschließen. (Zur Laufzeit brauche ich die Datei als String). Das funktioniert gut, bis der Linker die Verweise von den Symbolnamen finden muss. Das Problem ist, dass objcopy
die Symbolnamen mit dem Pfadnamen der Datei voranstellt. Da ich GNU Autotools verwende, um das Paket zu versenden, ändert sich dieser vorangestellte Pfadname und ich weiß nicht, welches externe Linkersymbol im C/C++ Programm verwendet werden soll.objcopy fügt Verzeichnispfadnamen dem Symbolnamen voran
nm libtest.a |grep textfile
textfile.o:
00001d21 D _binary__home_git_textfile_end
00001d21 A _binary__home_git_textfile_size
00000000 D _binary__home_git_textfile_start
libtest.a
wurde mit (Auszug aus Makefile.am) hergestellt:
SUFFIXES = .txt
.txt.$(OBJEXT):
objcopy --input binary --output elf32-i386 --binary-architecture i386 $< [email protected]
Wie kann ich objcopy
sagen uns nur den Stamm des Dateinamens als Linker Symbole? Oder gibt es einen anderen Weg um das Problem?
Mit 'stdin' und' extern' vermeiden, die Quelle zu speichern. – Alex
@Alex Ich bin mir nicht sicher, ob ich verstehe, was du meinst. –
mit '-x' und '-' als Eingabe für' gcc'/'g ++' –
Alex