Gcc 为什么链接器终止于我?当我建立叮当声

Gcc 为什么链接器终止于我?当我建立叮当声,gcc,linker,Gcc,Linker,我使用的是opensuse,具体是 我得到这个错误。有人知道我该怎么修吗 make[4]: Entering directory `/home/rupert/Desktop/llvm/tools/clang/tools/driver' llvm[4]: Linking Debug+Asserts executable clang collect2: ld terminated with signal 9 [Killed] make[4]: *** [/home/rupert/Desktop/ll

我使用的是opensuse,具体是

我得到这个错误。有人知道我该怎么修吗

make[4]: Entering directory `/home/rupert/Desktop/llvm/tools/clang/tools/driver'
llvm[4]: Linking Debug+Asserts executable clang
collect2: ld terminated with signal 9 [Killed]
make[4]: *** [/home/rupert/Desktop/llvm/Debug+Asserts/bin/clang] Error 1

可以找到全文

您的虚拟机内存不足,无法执行链接阶段。链接是构建中最典型的内存密集型部分,因为它是所有目标代码汇集在一起并作为一个整体进行操作的地方

如果您可以为VM分配更多RAM,那么就这样做。或者,您可以增加交换空间的大小。我不太熟悉虚拟机,但我认为您设置的虚拟硬盘驱动器将有一个交换分区。如果你能把它做得更大,或者分配第二个交换分区,这会有所帮助


但是,增加RAM(如果仅在构建期间)是最简单的方法。

您的虚拟机没有足够的内存来执行链接阶段。链接是构建中最典型的内存密集型部分,因为它是所有目标代码汇集在一起并作为一个整体进行操作的地方

如果您可以为VM分配更多RAM,那么就这样做。或者,您可以增加交换空间的大小。我不太熟悉虚拟机,但我认为您设置的虚拟硬盘驱动器将有一个交换分区。如果你能把它做得更大,或者分配第二个交换分区,这会有所帮助


增加RAM,即使只是在构建期间,也是最容易做到的。

我在VirtualBox系统上构建时也遇到过同样的问题。FWIW我在一台装有XP和2GB内存的笔记本电脑上构建。我不得不将虚拟内存提升到1462MB才能成功构建。还要注意,建议的8GB磁盘大小不足以在Ubuntu下构建和安装LLVM和Clang。我建议至少16GB。

我在构建VirtualBox系统时也遇到同样的问题。FWIW我在一台装有XP和2GB内存的笔记本电脑上构建。我不得不将虚拟内存提升到1462MB才能成功构建。还要注意,建议的8GB磁盘大小不足以在Ubuntu下构建和安装LLVM和Clang。我建议至少16GB。

也遇到了同样的问题,并通过执行以下步骤解决(这只是内存问题)-

  • 通过运行free命令检查当前交换空间(必须在10GB左右)
  • 检查交换分区

    sudo fdisk -l
    /dev/hda8       none            swap    sw              0       0
    
  • 创建交换空间并启用它

    sudo swapoff -a
    sudo /sbin/mkswap /dev/hda8
    sudo swapon -a
    
  • 如果您的交换磁盘大小不够,您希望创建交换文件并使用它

  • 创建交换文件

    sudo fallocate -l 10g /mnt/10GB.swap
    sudo chmod 600 /mnt/10GB.swap
    

    sudo dd if=/dev/zero of=/mnt/10GB.swap bs=1024 count=10485760
    sudo chmod 600 /mnt/10GB.swap
    
  • 装载交换文件。

    sudo mkswap /mnt/10GB.swap
    
    sudo swapon /mnt/10GB.swap
    
  • 启用交换文件。

    sudo mkswap /mnt/10GB.swap
    
    sudo swapon /mnt/10GB.swap
    

  • 也遇到了同样的问题,并通过执行以下步骤解决(这只是内存问题)-

  • 通过运行free命令检查当前交换空间(必须在10GB左右)
  • 检查交换分区

    sudo fdisk -l
    /dev/hda8       none            swap    sw              0       0
    
  • 创建交换空间并启用它

    sudo swapoff -a
    sudo /sbin/mkswap /dev/hda8
    sudo swapon -a
    
  • 如果您的交换磁盘大小不够,您希望创建交换文件并使用它

  • 创建交换文件

    sudo fallocate -l 10g /mnt/10GB.swap
    sudo chmod 600 /mnt/10GB.swap
    

    sudo dd if=/dev/zero of=/mnt/10GB.swap bs=1024 count=10485760
    sudo chmod 600 /mnt/10GB.swap
    
  • 装载交换文件。

    sudo mkswap /mnt/10GB.swap
    
    sudo swapon /mnt/10GB.swap
    
  • 启用交换文件。

    sudo mkswap /mnt/10GB.swap
    
    sudo swapon /mnt/10GB.swap
    

  • 我用make-j1试过了,效果很好!。但是它需要很长的时间来构建。

    我尝试了make-j1,它很有效!。但是构建需要很长时间。

    在这种情况下,我建议使用
    -l(--max load)
    选项,而不是限制
    -j
    。可能有用
    在这种情况下,我建议使用
    -l(--max load)
    选项,而不是限制
    -j
    。可能有用
    .

    在配置时没有使用“--enable optimized”,我发现2G是不够的。我不得不将我的虚拟机的内存增加到3G来构建clang。在配置时没有“--enable optimized”,我发现2G是不够的。我不得不将我的虚拟机的内存增加到3G来构建clang。如果你在CentOS或相关发行版上,你可以按照添加交换文件。这为我解决了问题。如果您在CentOS或相关发行版上,您可以按照添加交换文件。这为我解决了这个问题。演示如何创建交换文件非常有用。还值得一提的是,为了在重新启动期间保持这些更改,您必须将
    /mnt/10GB.swap none swap sw 0 0
    行添加到
    /etc/fstab
    。我的笔记本电脑中有32GiB的内存,但仍然失败。迪帕的解决方案奏效了。通过限制并发作业的数量,内存使用率降低了相同的因素。编译是用-j 9完成的,当链接崩溃时,我只做了-j 1,它成功了:)显示了如何创建交换文件是非常有用的。还值得一提的是,为了在重新启动时保持这些更改,您必须将
    /mnt/10GB.swap none swap sw 0 0
    行添加到
    /etc/fstab
    。我的笔记本电脑内存为32GiB,但仍然失败。迪帕的解决方案奏效了。通过限制并发作业的数量,内存使用率降低了相同的因素。编译是用-j 9完成的,当链接崩溃时,我只做了-j 1,它成功了:)你可以做-j 9,直到它消失,然后继续做-j 1你可以做-j 9,直到它消失,然后继续做-j 1问题是实际的,当其他人不这样做时,答案会有所帮助。我今天遇到了一个类似的问题,在现有的答案中找不到解决方案。这个问题是实际的,当其他人不这样做时,答案会有所帮助。我今天遇到了一个类似的问题,在现有的答案中找不到解决方案。