AS 汇编程序 ARM Raspberry PI 3 与 C 库链接?
AS assembler ARM Raspberry PI 3 linking with C libraries?
我正在学习如何在 raspberry pi 上编程。当我编译时,我使用 as
和 ld
命令来编译和 link。我想 link 与 libc 并使用 malloc 但不使用 gcc
作为我的编译器。我尝试 linking 与 /usr/lib/arm-linux-gnueabihf/libc.so
这是我输入的内容(编辑):
as test.s -o test.o
ld -o test test.o /usr/lib/arm-linux-gnueabihf/libc.so
./test
它编译并 linked,但是当我尝试 运行 它时,它说找不到测试
这里是test.s
:
.global _start
.extern malloc
_start:
mov R0, #4
bl malloc
mov R0, #0
mov R7, #1
svc 0
.end
这样可以吗?
还是我需要做更多的事情?
任何帮助将不胜感激?
这里是我正在做的编辑(如果使用它的某些功能,不要忘记初始化 C!):
ld -o test /usr/lib/arm-linux-gnueabihf/libc.so test.o -dynamic-linker /lib/ld-linux-armhf.so.3
您必须通过 -dynamic-linker /lib/ld-linux-armhf.so.3
将动态链接器的路径传递给 ld,否则它将使用不存在的 /usr/lib/ld.so.1
。
注意:虽然这会生成一个可以是 运行 的可执行文件,但我怀疑它能否正常工作,因为使用了 libc 但未初始化。
我正在学习如何在 raspberry pi 上编程。当我编译时,我使用 as
和 ld
命令来编译和 link。我想 link 与 libc 并使用 malloc 但不使用 gcc
作为我的编译器。我尝试 linking 与 /usr/lib/arm-linux-gnueabihf/libc.so
这是我输入的内容(编辑):
as test.s -o test.o
ld -o test test.o /usr/lib/arm-linux-gnueabihf/libc.so
./test
它编译并 linked,但是当我尝试 运行 它时,它说找不到测试
这里是test.s
:
.global _start
.extern malloc
_start:
mov R0, #4
bl malloc
mov R0, #0
mov R7, #1
svc 0
.end
这样可以吗?
还是我需要做更多的事情?
任何帮助将不胜感激?
这里是我正在做的编辑(如果使用它的某些功能,不要忘记初始化 C!):
ld -o test /usr/lib/arm-linux-gnueabihf/libc.so test.o -dynamic-linker /lib/ld-linux-armhf.so.3
您必须通过 -dynamic-linker /lib/ld-linux-armhf.so.3
将动态链接器的路径传递给 ld,否则它将使用不存在的 /usr/lib/ld.so.1
。
注意:虽然这会生成一个可以是 运行 的可执行文件,但我怀疑它能否正常工作,因为使用了 libc 但未初始化。