objcopy
を使用して、バイナリ形式のテキストファイルを実行可能ファイルに含めることにしています。 (実行時にファイルが文字列として必要です)。これは、リンカがシンボル名から参照を見つける必要があるまでうまく動作します。問題は、objcopy
がシンボル名の前にファイルのパス名を付加することです。私はGNU Autotoolsを使ってパッケージを出荷しているので、この前置きパス名が変更され、C/C++プログラムで使用する外部リンカシンボルは分かりません。objcopyはシンボル名の前にディレクトリパス名を付加します
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
(Makefile.amからの抽出物)を製造した。
SUFFIXES = .txt
.txt.$(OBJEXT):
objcopy --input binary --output elf32-i386 --binary-architecture i386 $< [email protected]
はどのようなリンカーシンボルとしてファイル名の私たちだけステムにobjcopy
を伝えることができますか?あるいは、問題の周りに別の方法がありますか?
'stdin'と' extern'を使ってソースを保存しないでください。 – Alex
@Alexあなたが何を意味するのか分かりません。 –
'gcc' /' g ++ 'の入力として '-x'と '-'を使用しています –
Alex