objcopy
을 사용하여 이진 형식의 텍스트 파일을 실행 파일에 포함하려고합니다. (런타임에 나는 파일을 문자열로 필요로한다). 링커가 심볼 이름에서 참조를 찾을 때까지 제대로 작동합니다. 문제는 objcopy
이 기호 이름 앞에 파일의 경로 이름을 추가한다는 것입니다. 패키지를 출하 할 때 GNU Autotools를 사용하기 때문에이 앞에 붙은 경로명이 바뀌고 C/C++ 프로그램에서 사용할 외부 링커 심볼을 알지 못합니다.objcopy는 심볼 이름에 디렉토리 경로를 앞에 붙입니다.
SUFFIXES = .txt
.txt.$(OBJEXT):
objcopy --input binary --output elf32-i386 --binary-architecture i386 $< [email protected]
어떻게 난 단지 우리에게 링커 기호로 파일 이름의 줄기를 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에서 발췌)로 제작되었다? 아니면 문제를 해결하는 다른 방법이 있습니까?
'stdin'과 'extern'을 사용하면 소스를 저장하지 않아도됩니다. – Alex
@Alex 내가 무슨 뜻인지 잘 모르겠다. –
'gcc' /'g ++'에 대한 입력으로'-x'과'-'을 사용합니다. –
Alex