cerco di fare le funzioni in linguaggio assembly e metterli in una libreria dinamica così creo .o con .S con questo comando:
nasm -f elf64 hello.S -o hello.o
ma quando voglio creare il lib con gcc:
gcc -fPIC -shared hello.o -o libasm.so
e mi visualizza questo errore:
/usr/bin/ld: hello.o: relocation R_X86_64_PC32 against undefined symbol [email protected]@GLIBC_2.2.5 can not be used when making a shared object; recompile with -fPIC
Errore di compilazione: delocalizzazione R_X86_64_PC32 contro simbolo indefinito
6
A
risposta
4
Da http://www.nasm.us/xdoc/2.10rc8/html/nasmdoc9.html#section-9.2.5:
To call an external routine, you must use another special PIC relocation type, WRT ..plt. This is much easier than the GOT-based ones: you simply replace calls such as CALL printf with the PLT-relative version CALL printf WRT ..plt.
così invece di
; ...
call printf
uso
; ...
call printf WRT ..plt
e compilare e collegamento come normale.
Problemi correlati
- 1. errore del linker "delocalizzazione R_X86_64_PC32 contro il simbolo non definito" nonostante la compilazione con -fPIC
- 2. simbolo indefinito: PyUnicodeUCS2_AsLatin1String
- 3. rotaie hiredis simbolo indefinito
- 4. Simbolo indefinito su node.js addon
- 5. ImportError NumPy/core/multiarray.so: simbolo indefinito: PyUnicodeUCS2_AsASCIIString
- 6. Problema nella compilazione con marshal.h: errore C2872: 'IServiceProvider': simbolo ambiguo
- 7. Errore di simbolo duplicato
- 8. TypeError: Non deve corrispondere contro 'indefinito' o 'nullo'
- 9. cercando di importare un modulo: simbolo indefinito: PyUnicodeUCS4_DecodeUTF8
- 10. riposizionamento R_X86_64_32 contro l'errore di un simbolo locale
- 11. Linker Error Lunatic Python lua.require ('presa') -> simbolo indefinito: lua_getmetatable
- 12. riferimento indefinito al simbolo anche quando nm indica che questo simbolo è presente nella libreria condivisa
- 13. simbolo indefinito quando si carica estensione PHP realizzato con SWIG
- 14. Errore PHPUnit "indice indefinito: HTTP_HOST"
- 15. indefinito riferimento al simbolo, anche se la libreria è legata
- 16. riferimento indefinito al simbolo '_ZNSt8ios_base4InitD1Ev @@ GLIBCXX_3.4' edificio OpenCV su Ubuntu
- 17. riferimento indefinito a boost :: system :: system_category() durante la compilazione
- 18. errore di lancio variabile "indefinito", impossibile trovare
- 19. Errore di compilazione deprecato
- 20. Errore di compilazione Openssl
- 21. cmake errore di compilazione
- 22. Errore di compilazione Xcode
- 23. Compilazione contro libusb-dev su Ubuntu
- 24. errore simbolo duplicato C++
- 25. Errore di compilazione con API 10
- 26. Errore di compilazione Maven & Protobuf: Impossibile trovare il simbolo nel pacchetto com.google.protobuf
- 27. iOS - Errore linker, simbolo duplicato
- 28. generici Java errore di compilazione
- 29. Errore di compilazione C# Array.Contains()
- 30. errore di compilazione CSS Asset
Vedere http://www.nasm.us/xdoc/2.10rc8/html/nasmdoc9.html#section-9.2.5 (_Cancellazione delle procedure all'esterno della libreria_) – Michael