Dynamic-Linking
執行自定義編譯的執行檔返回“沒有這樣的文件或目錄”
我有一個執行檔,但是當我執行它時,我得到*“沒有這樣的文件或目錄”*
$ chmod a+x bin $ file bin bin: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld64.so.1, not stripped $ ./bin bash: ./bin: No such file or directory
請注意,這個執行檔實際上是 ELF 64 位,作業系統也是如此。
這是因為我忘記
-dynamic-linker
在呼叫中包含選項ld
-dynamic-linker /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
這麼稱呼它,
ld -m elf_x86_64 -dynamic-linker /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -o bin
使它工作正常。
有關 32 位/64 位不匹配的類似問題的更多資訊,請參閱此問題