Ich weiß, dass dies eine alte Frage ist, aber ich habe ein funktionierendes Beispiel gefunden, das mir geholfen hat, es auf mein Projekt anzuwenden. (Falls jemand auf diese Frage stößt)
entnommen aus Sourceware Mail Archiv
$ echo 'int main() { puts ("Hello world"); }' | gcc -x c - -c -o hello.o
$ echo "this is my special data" >mydata
$ objcopy --add-section .mydata=mydata \
--set-section-flags .mydata=noload,readonly hello.o hello2.o
$ gcc hello2.o -o hello
$ ./hello
Hello world
$ objdump -sj .mydata hello
werfen Sie einen Blick auf ELFsh, das jetzt Teil des ERESI-Projekts ist http://www.eresi-project.org/ Sie haben eine Menge Dokumentation und coole Anwendungen ihrer Tools.
Die folgenden Links könnten hilfreich sein:
- Das Tutorial "libelf by Example" hat ein Kapitel über das Erstellen neuer ELF-Objekte.
- Das elftoolchain-Projekt hat Handbuchseiten, die
libelf
beschreiben API im Detail.
In dieser Frage zu ELF-Dateiheadern gibt es einige (möglicherweise) verwandte Antworten. Die akzeptierte Antwort wird mit objcopy
erwähnt Abschnitte zu einer ELF-Datei hinzuzufügen, und die BSD-Bintools behaupten, eine BSD-lizenzierte Implementierung von objcopy
zu haben das könnte Ihren Bedürfnissen entsprechen.