我使用以下命令在 Ubuntu 5.4 (GNAT 3.4) 上为 Linux 编译了 Ada 程序:
gnatmake -O3 myprogram -bargs -static
然后,当我在 Ubuntu 机器上运行该程序时,它运行良好。但是在另一台机器(Linux 网络服务器)上,当我尝试时收到以下错误消息strace
:
execve("./myprogram", ["./myprogram"], [/* 15 vars */]) = 0
brk(0) = 0x811e000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76f8000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76f7000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb76f7680, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
这意味着什么?我是否正确理解程序无法运行是因为缺少两个文件(ld.so.nohwcap 和 ld.so.preload)?我怎样才能避免这个错误?编译时是否有可能将这些文件包含到程序中?