Search code examples
gccgnubinutils

What's the "correct" way to determine target and architecture for GNU binutils?


In my build chain, I need to do this:

objcopy -I binary -O $BFDNAME -B $BFDARCH <this> <that>

in order to get a binary file into library form. Because I want other people to be able to use this, I need to know how to get $BFDNAME and $BFDARCH from their toolchain when they run the build. I can get the values locally by running objdump -f against a file I've already built, but is there a better way which won't leave me compiling throw-away files just to get configuration values?


Solution

  • Thank you for pointing this out, regularfry! Your answer helped me to find another solution which works without specifying the architecture at all:

    ld -r -b binary -o data.o data.txt
    

    On my system (Ubuntu Linux, binutils 2.22) both objcopy and ld approaches produce identical object files.

    All credit goes to: http://stupefydeveloper.blogspot.de/2008/08/cc-embed-binary-data-into-elf.html