Używam objcopy
do dołączenia binarnej postaci pliku tekstowego do pliku wykonywalnego. (W czasie wykonywania potrzebuję pliku jako ciąg). Działa to dobrze, dopóki linker nie znajdzie odnośników od nazw symboli. Problem polega na tym, że objcopy
poprzedzają nazwy symboli ścieżką do pliku. Ponieważ używam GNU Autotools do wysyłki paczki, ta zmieniona nazwa ścieżki zmienia się i nie wiem, jakiego zewnętrznego symbolu linkera użyć w programie C/C++.objcopy przedkłada ścieżkę do katalogu o nazwie symbolu
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
została wyprodukowana z (wyciąg z Makefile.am):
SUFFIXES = .txt
.txt.$(OBJEXT):
objcopy --input binary --output elf32-i386 --binary-architecture i386 $< [email protected]
Jak mogę objcopy
tylko nas trzpień nazwy pliku jako symbole łącznika? Czy istnieje inny sposób obejścia problemu?
Użycie 'stdin' i' extern' pozwala uniknąć przechowywania źródła. – Alex
@Alex Nie jestem pewien, czy rozumiem co masz na myśli. –
używając '-x' i '-' jako dane wejściowe dla' gcc'/'g ++' –
Alex