Questions tagged «compiling»

编译是将源代码转换为特定计算机体系结构的字节码的过程。

5
在多核上编译时,可能导致make挂起的原因是什么?
昨天我正尝试从源代码编译ROOT软件包。由于我是在6核怪物机器上进行编译的,因此我决定继续使用并使用多核进行构建make -j 6。最初编译过程非常顺利,而且速度非常快,但有时make仅在一个内核上使用100%CPU即可挂起。 我进行了一些谷歌搜索,并在ROOT留言板上找到了此帖。自从我自己构建了这台计算机以来,我担心自己没有正确安装散热器,并且CPU过热或其他原因。不幸的是,我在工作中没有冰箱可以插入。;-) 我安装了lm-sensors软件包并make -j 6再次运行,这次监视CPU温度。尽管温度很高(接近60摄氏度),但从未超过高温或临界温度。 我尝试运行,make -j 4但是make在编译过程中的某个时间再次挂起,这次是在另一个位置。 最后,我仅在运行时进行编译make,并且运行良好。我的问题是:为什么挂了?由于它停在两个不同的位置,我想这可能是由于某种比赛条件造成的,但是我认为make应该聪明到足以使所有东西都处于正确的顺序,因为它提供了-j选择。
17 linux  compiling  make 

3
apt-get build-dep无法找到源包
我已经按照本指南在Ubuntu 12.04上禁用了鼠标中键粘贴。 奇迹般有效。 现在,我试图在Linux Mint 17上实现相同的目标。 sudo apt-get build-dep libgtk2.0-0 它给了我以下输出: Reading package lists... Done Building dependency tree Reading state information... Done Picking 'gtk+2.0' as source package instead of 'libgtk2.0-0' E: Unable to find a source package for gtk+2.0 对我来说,apt-get似乎以某种方式“解析” 'libgtk2.0-0'到'gtk+2.0',但是没有找到任何这样的软件包。 编辑:尽管我现在可以编译该程序(请参阅我的答案),但我仍然不知道Picking 'gtk+2.0' as source package instead of 'libgtk2.0-0'应该是什么 意思。任何对此的见解将不胜感激,谢谢!
16 apt  compiling 


4
为Ralink RT2870编译驱动程序时出错
我试图在Kali Linux上为Rosewill RNX-N600UBE无线卡(Ralink RT2870芯片组)安装驱动程序。我从他们的网站上下载了驱动程序并解压缩/解压缩,但是现在当我尝试运行“ make”命令时,出现此错误。 /home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux/../../os/linux/rt_linux.c:1156:20: error: incompatible types when assigning to type ‘int’ from type ‘kuid_t’ /home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux/../../os/linux/rt_linux.c:1157:20: error: incompatible types when assigning to type ‘int’ from type ‘kgid_t’ make[4]: *** [/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux/../../os/linux/rt_linux.o] Error 1 make[3]: *** [_module_/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux] Error 2 make[2]: *** [sub-make] Error 2 make[1]: *** [all] Error 2

1
在RPM .spec中设置SELinux上下文的正确方法是什么?
我正在尝试构建一个针对RHEL4和5的RPM。现在,我打来电话chcon,%post但是有多个Google条目说“这不是您应该做的”,在正确方法的帮助下非常有限。我还注意到fixfiles -R mypackage check说正确的文件是错误的(正如预期的那样; RPM DB没有意识到我想要的)。 我说具体RHEL4,因为它并没有具备semanage这似乎是正确的方式去做一个。(添加新策略,然后restorecon在中的目录上运行%post。) 我也不需要我自己的上下文,只需httpd_cache_t在非标准目录上即可。 我还看到了“让它cpio来照顾它”-但是然后我遇到了一个新问题,即非root RPM构建用户无法chcon在构建目录上运行。我作弊并sudo进入了规范文件,但这似乎并不重要。
14 compiling  rpm  selinux 

6
寻找构建最小的Linux桌面的工具
我越来越不满意这个事实,即配置Linux 桌面通常意味着消除膨胀,而不是添加和调整功能。我得出的结论是,我宁愿以最小的东西开始,然后添加我所了解的提供附加功能的软件包。 因此,我正在寻找一种非常小的桌面发行版,或者寻找一种更好的构建这种发行版的工具。换句话说,我想用运行前构建工具替换软件包管理器。 软件包管理器不会受到伤害,但我正在寻找一个专注于高级预配置​​的发行版,而不是一个庞大的软件包存储库 我看过各种最小的桌面发行版,但它们似乎都可以解决不同的问题,例如,设计用于在较旧的硬件上运行或从cd / stick / ramfs运行。但是我不希望有最低限度的分配,因为我的硬件比较旧,但是我想知道各个部分的用途。从主内存中运行没有帮助有两种,我想要的东西最少的和简单的。 由于似乎没有针对这种极简主义设计的发行版,因此我想到一个明显的选择是构建Linux From Scratch。但是,尽管我希望构建过程具有高度的自定义性,但它也必须自动化,因为在拥有一个令我满意的系统之前,我将不得不多次运行它。 虽然存在用于lfs的工具,该工具可以自动化构建过程,但它并不是真正的组成部分。基本上,它从文档中提取构建系统所需的步骤,然后自动执行。我正在寻找更强大和高级的东西,并且也不想编辑xml。 经过一番搜索,我发现Buildroot旨在构建嵌入式发行版,但也允许安装X11。在构建工具链然后生成rootfs之前,可以make menuconfig像Linux一样配置构建。这看起来很像我的想法,只是它打算用于嵌入式系统的交叉编译。 我目前的想法是使用buildroot,但首先要删除所有嵌入式特定部分,并用lfs中的各个部分替换它们。很多工作。 另外,最重要的是buildroot存在一些问题(从我的极限测试中可以看出),仅启用附加软件包会导致从零开始重新构建漏洞,但是对于微不足道的更改,我想避免这种情况。 在进行此时间投资之前,我将继续使用预安装的构建工具(例如buildroot)来搜索桌面发行版,该工具是用于构建桌面发行版的buildroot的替代/分支。 编辑:到目前为止的答案将我指向诸如Gentoo之类的发行版,这是我当前正在使用的发行版。但是我正在寻找 Gentoo,Arch,Debian等发行版的替代方案,因为这些发行版还不够少。安装后,还必须自定义这些发行版。我想要可以在安装前定制的东西。 尽管上述所有发行版都是很好的发行版,但它们并不是我想要的。我正在寻找的是“ buildroot for desktop”。如果您不知道什么是buildroot,那么您可能将无法提供使我满意的答案。 而且我也不认为这个问题是主观的。我根本找不到满足我需求的任何东西,因此要求您将我指向可能至少提供我所需部分内容的项目。

3
编译内核时如何减小initrd的大小?
当我编译自己的内核时,基本上,我的工作是: 我从www.kernel.org下载源代码并解压缩。 我将以前.config的代码复制到源代码中,并执行make menuconfig来监视新选项并根据内核的新策略修改配置。 然后,我编译它: make -j 4 最后,我安装了它:su -c 'make modules_install && make install'。 经过几次测试,我从(/boot和/lib/modules)中删除了旧内核,并使用新内核完全运行(这最后一步挽救了我的性命!这是一个专业提示!)。 问题是/boot/initrd.img-4.x.x与发行版中的相比,我总是得到一个巨大的数字。这里以我当前/boot/目录的内容为例: # ls -alFh total 243M drwxr-xr-x 5 root root 4.0K Mar 16 21:26 ./ drwxr-xr-x 25 root root 4.0K Feb 25 09:28 ../ -rw-r--r-- 1 root root 2.9M Mar 9 07:39 System.map-4.4.0-1-amd64 -rw-r--r-- …

2
如何仅重定向stderr?
我这样做有点麻烦。我需要运行已编译的.java文件,并且仅将stderr重定向到名为error的文件。因此.java文件名为javaProgram.java。 这是我尝试过的: java javaProgram 2> error 但是当我 cat error 似乎里面有东西,即使我知道特定的.java文件没有错误的事实。难道我做错了什么?我只想显示该错误文件,而不是其他任何错误。


7
从Apue编译代码
到目前为止,我已经开始阅读《UNIX®环境中的高级编程》这本书。我想尝试运行其第一个代码示例。我正在运行Scientific Linux 6.4。 我下载了源代码,并按自述make文件中的说明运行了未压缩的文件。 我写了第一个程序(一个模拟ls命令) #include "./include/apue.h" #include <dirent.h> int main(int argc, char *argv[]) { DIR *dp; struct dirent *dirp; if(argc!=2) err_quit("usage: test directory_name"); if((dp=opendir(argv[1]))==NULL) err_sys("Can't open %s", argv[1]); while((dirp=readdir(dp))!=NULL) printf("%s\n", dirp->d_name); closedir(dp); return 0; } 并将其放在未压缩的文件中。正如书中所建议的那样,我随后进行了:gcc myls.c。但是我得到这个错误: # gcc myls.c /tmp/ccWTWS2I.o: In function `main': test.c:(.text+0x20): undefined reference to `err_quit' …
12 compiling 

1
为什么我最初的虚拟磁盘这么大?
我正在运行带有内核版本的Ubuntu 11.10 3.0.0-14。我从3.1.0分支机构下载并构建了内核。安装新内核后,我看到我的/boot/initrd.img-3.1.0文件很大。这是114MB,而我/boot/initrd.img-3.0.0-14-generic大约是13MB。我想摆脱膨胀,这显然是不必要的。 构建新内核时,我将复制/boot/config-3.0.0-14-generic到.config到我的构建目录中,以保留原始内核的配置。我运行make oldconfig,为所有新选项选择了默认值,然后构建了内核。 查看每个initrd cpio归档文件中的文件大小,我发现在3.1.0 ramdisk中,所有.ko模块的大小都比3.0.0-14大。我以为在配置文件中检查了一个不必要的调试标志,但没有看到3.0.0-14配置文件中尚未启用的任何其他功能。 我/boot/config-3.0.0-14-generic在这里:http: //pastebin.com/UjH7nEqd 我/boot/config-3.0.1的在这里:http : //pastebin.com/HyT0M2k1 谁能解释所有不必要的膨胀来自何处?

2
什么是二进制包?如何建立它们?
我想了解有关二进制包的详细信息,然后在Linux上运行它们。我正在运行Debian base(Ubuntu / Linux mint)Linux操作系统。 如何从源代码构建二进制包?我可以直接为应用程序(例如Firefox等)和游戏(例如boswars等等)下载二进制包吗? 我以“ xyz.linux.run”格式运行一些直接软件包,这些软件包是什么?它们独立于依赖项吗?还是预建的二进制软件包? 如何通过直接在Linux上“ xyz.linux.run”来构建可在linux操作系统上运行的文件。 二进制包和deb包之间的区别是什么?

1
无法加载模块:不同意符号module_layout的版本
按照本教程编写我的第一个驱动程序。 Makefile是: # Makefile – makefile of our first driver # if KERNELRELEASE is defined, we've been invoked from the # kernel build system and can use its language. ifneq (${KERNELRELEASE},) obj-m := ofd.o # Otherwise we were called directly from the command line. # Invoke the kernel build system. …


3
如何使继续编译?
我知道我可以make随时中断进程,而不必再次重新编译整个源代码树。据我所知,make只有在尚未编译目标时才编译目标,或者在最后一次编译后才修改源代码。 但是,如果我打断了make,肯定会有一个或多个(取决于并发级别)半就绪的二进制文件。下次我跑步时,对他们有make什么影响?还是在我按Ctrl+ C来避免部分编译的二进制文件时完成当前目标?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.