by Anonymous » 05 Apr 2025, 22:48
Ich versuche ein einfaches Hello World -Programm auf meinem Android -Telefon zu montieren und auszuführen. Mein Host -Laptop ist ein Ubuntu 22.04 64 -Bit -System. Ich habe den Android-Ndk-R27C heruntergeladen und an meinen Android-Ordner extrahiert, in dem mein SDK bereits angewiesen ist. /HOME/Entwickler/Android/Android-NDK-R27C-Linux/Android-NDK-R27C/Toolchains/LLVM/Prebuilt/Linux-X86_64/bin
Code: Select all
/* Data segment: define our message string and calculate its length. */
msg:
.ascii "Hello, ARM64!\n"
len = . - msg
.text
/* Our application's entry point. */
.globl _start
_start:
/* syscall write(int fd, const void *buf, size_t count) */
mov x0, #1 /* fd := STDOUT_FILENO */
ldr x1, =msg /* buf := msg */
ldr x2, =len /* count := len */
mov w8, #64 /* write is syscall #64 */
svc #0 /* invoke syscall */
/* syscall exit(int status) */
mov x0, #0 /* status := 0 */
mov w8, #93 /* exit is syscall #93 */
svc #0 /* invoke syscall */
Wenn ich auslaufe.
Code: Select all
ld.lld: error: duplicate symbol: _start
>>> defined at crtbegin.c
>>> /home/developer/Android/android-ndk-r27c-linux/android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64/bin/./../sysroot/usr/lib/aarch64-linux-android/27/crtbegin_dynamic.o:(_start)
>>> defined at /tmp/hello64bit-fb91b4.o:(.text+0x0)
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Wenn ich den Namen starten zu start1 Ich erhalte ein undefined Main Fehler:
Code: Select all
ld.lld: error: undefined symbol: main
>>> referenced by crtbegin.c
>>> /home/developer/Android/android-ndk-r27c-linux/android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64/bin/./../sysroot/usr/lib/aarch64-linux-android/27/crtbegin_dynamic.o:(_start_main)
Was mache ich falsch?
Ich versuche ein einfaches Hello World -Programm auf meinem Android -Telefon zu montieren und auszuführen. Mein Host -Laptop ist ein Ubuntu 22.04 64 -Bit -System. Ich habe den Android-Ndk-R27C heruntergeladen und an meinen Android-Ordner extrahiert, in dem mein SDK bereits angewiesen ist. /HOME/Entwickler/Android/Android-NDK-R27C-Linux/Android-NDK-R27C/Toolchains/LLVM/Prebuilt/Linux-X86_64/bin
[code]
/* Data segment: define our message string and calculate its length. */
msg:
.ascii "Hello, ARM64!\n"
len = . - msg
.text
/* Our application's entry point. */
.globl _start
_start:
/* syscall write(int fd, const void *buf, size_t count) */
mov x0, #1 /* fd := STDOUT_FILENO */
ldr x1, =msg /* buf := msg */
ldr x2, =len /* count := len */
mov w8, #64 /* write is syscall #64 */
svc #0 /* invoke syscall */
/* syscall exit(int status) */
mov x0, #0 /* status := 0 */
mov w8, #93 /* exit is syscall #93 */
svc #0 /* invoke syscall */
[/code]
Wenn ich auslaufe.[code]ld.lld: error: duplicate symbol: _start
>>> defined at crtbegin.c
>>> /home/developer/Android/android-ndk-r27c-linux/android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64/bin/./../sysroot/usr/lib/aarch64-linux-android/27/crtbegin_dynamic.o:(_start)
>>> defined at /tmp/hello64bit-fb91b4.o:(.text+0x0)
clang: error: linker command failed with exit code 1 (use -v to see invocation)
[/code]
Wenn ich den Namen starten zu start1 Ich erhalte ein undefined Main Fehler:
[code]ld.lld: error: undefined symbol: main
>>> referenced by crtbegin.c
>>> /home/developer/Android/android-ndk-r27c-linux/android-ndk-r27c/toolchains/llvm/prebuilt/linux-x86_64/bin/./../sysroot/usr/lib/aarch64-linux-android/27/crtbegin_dynamic.o:(_start_main)
[/code]
Was mache ich falsch?