我在我的二进制文件中看到这一行:
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
Run Code Online (Sandbox Code Playgroud)
难道我不应该摆脱它吗?实际上更令人困惑的是,为什么它首先存在,我觉得 gcc 默认编译只在主机上运行的东西有点疯狂。仅仅依赖于一些随机的 libc 是不是非常危险,这些随机 libc 可能位于也可能不在我最终将这个二进制文件复制粘贴到的机器上?我不明白。在 Windows 上,我认为我会收到某种“缺少运行时”错误,该错误的版本控制为我编译它所用的确切运行时,因此,如果我使用特定编译器在 XP 上进行编译,则任何主机也必须安装该运行时。但在 Linux 上我从未听说过这样的情况,或者某处是否有 50 个不同的 libc.so 目录,并且当我的应用程序尝试启动时正确的目录被链接?因为我有一种感觉,Linux 上确实存在 .dll 地狱,但实际情况并非如此。
我按照这里的步骤在用户模式下成功编译了内核:https : //btrfs.wiki.kernel.org/index.php/Debugging_Btrfs_with_GDB
但是当我./linux
以各种方式开始时,它总是给我一个非常相似的错误:
pc@linux-94q0:~/linux-4.11-rc4> ./linux root=/mnt
Core dump limits :
soft - 0
hard - NONE
Checking that ptrace can change system call numbers...OK
Checking syscall emulation patch for ptrace...OK
Checking advanced syscall emulation patch for ptrace...OK
Checking environment variables for a tempdir...none found
Checking if /dev/shm is on tmpfs...OK
Checking PROT_EXEC mmap in /dev/shm...OK
Adding 33251328 bytes to physical memory to account for exec-shield gap
Linux version 4.11.0-rc4 (pc@linux-94q0) (gcc version 4.8.5 (SUSE Linux) ) …
Run Code Online (Sandbox Code Playgroud)