Compiling
使用目前原始碼從 asm 程式碼編譯共享庫
我只是在 asm 中做了一些基本功能,我在共享庫中編譯。像 :
BITS 64 global foo section .text foo: mov rax, 1 ret
我編譯:
nasm -f elf64 foo.S -o foo.o && gcc -shared foo.o -o libfoo.so
我有一個主要的測試:
#include <stdio.h> int foo(); int main() { printf("%d\n", foo()); return (0); }
如果我直接用 foo.o 編譯它,一切正常。但如果我這樣編譯:
gcc main.c -L. -lfoo
我會收到這個錯誤:
/usr/.../bin/ld: warning: type and size of dynamic symbol `foo' are not defined
我以為是因為原型沒有聲明,但是我用包含原型的lib.h文件重新編譯了foo.o,並且出現了同樣的問題。
那是我必須完成elf文件的另一部分嗎?
謝謝你。
您需要指定
foo
符號對應於函式:[BITS 64] global foo:function section .text foo: mov rax, 1 ret