Compile a Standalone Static Executable

后端 未结 2 1114
悲哀的现实
悲哀的现实 2020-12-07 15:37

I\'m trying to compile an executable (ELF file) that does not use a dynamic loader. I built a cross compiler that compiles mips from linux to be used on a simulator I made.

相关标签:
2条回答
  • 2020-12-07 16:17

    Try using the -static flag?

    0 讨论(0)
  • 2020-12-07 16:39

    Use the following flags for linking

    -static -static-libgcc -static-libstdc++
    

    Use these three flags to link against the static versions of all dependencies (assuming gcc). Note, that in certain situation you don't necessarily need all three flags, but they don't "hurt" either. Therefore just turn on all three.

    Check if it actually worked

    1. Make sure that there is really no dynamic linkage

      ldd yourexecutable
      

      should return "not a dynamic executable" or something equivalent.

    2. Make sure that there are no unresolved symbols left

      nm yourexecutable | grep " U "
      

      The list should be empty or should contain only some special kernel-space symbols like

      U __tls_get_addr
      
    3. Finally, check if you can actually execute your executable

    0 讨论(0)
提交回复
热议问题