คำถามติดแท็ก compiling

การคอมไพล์เป็นกระบวนการของการแปลงซอร์สโค้ดเป็นโค้ดไบต์สำหรับสถาปัตยกรรมคอมพิวเตอร์เฉพาะ

5
สิ่งที่อาจทำให้เกิดการแขวนเมื่อรวบรวมในหลายแกน
เมื่อวานฉันพยายามรวบรวมแพ็คเกจROOTจากแหล่งที่มา ตั้งแต่ผมได้รับการรวบรวมไว้ในเครื่องมอนสเตอร์ 6 make -j 6หลักฉันตัดสินใจที่จะไปข้างหน้าและสร้างโดยใช้หลายแกนใช้ การคอมไพล์นั้นราบรื่นและเร็วมากในตอนแรก แต่ในบางจุดmakeใช้ CPU 100% เพียงแกนเดียว ฉันทำ Google และพบโพสต์นี้บนกระดานข้อความ ROOT เนื่องจากฉันสร้างคอมพิวเตอร์เครื่องนี้ขึ้นมาเองฉันจึงกังวลว่าฉันไม่ได้ใช้ฮีทซิงค์อย่างถูกต้องและ CPU นั้นร้อนเกินไปหรือมีอะไรบางอย่าง น่าเสียดายที่ฉันไม่มีตู้เย็นในที่ทำงานที่ฉันสามารถติดมันได้ค่ะ ;-) ฉันติดตั้งlm-sensorsแพคเกจและวิ่งmake -j 6อีกครั้งคราวนี้ตรวจสอบอุณหภูมิของ CPU แม้ว่าจะสูง (ใกล้ถึง 60 C) แต่ก็ไม่เคยผ่านอุณหภูมิสูงหรือวิกฤต ฉันพยายามวิ่ง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'แต่แล้วไม่พบแพคเกจใด ๆ ที่มีชื่อเช่นนั้น …
16 apt  compiling 


4
เกิดข้อผิดพลาดในการรวบรวมไดรเวอร์สำหรับ Ralink RT2870
ฉันพยายามติดตั้งไดรเวอร์สำหรับการ์ดไร้สาย Rosewill RNX-N600UBE (ชิปเซ็ต Ralink RT2870) บน Kali Linux ฉันดาวน์โหลดไดรเวอร์จากเว็บไซต์ของพวกเขาและแตก / คลายซิป แต่ตอนนี้เมื่อฉันพยายามเรียกใช้คำสั่ง 'ทำ' ฉันจะได้รับข้อผิดพลาดนี้ /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]: …

1
วิธีที่เหมาะสมในการตั้งค่าบริบท SELinux ใน RPM เป็นอย่างไร
ฉันกำลังพยายามสร้าง RPM ที่มีเป้าหมาย RHEL4 และ 5 ตอนนี้ฉันโทรchconจาก%postแต่หลาย ๆ รายการของ Google บอกว่า "นั่นไม่ใช่วิธีที่คุณควรจะทำ" ด้วยความช่วยเหลือที่ จำกัด อย่างถูกวิธี ฉันยังสังเกตเห็นfixfiles -R mypackage checkว่าไฟล์ผิดเมื่อมันถูกต้อง (อย่างที่คาดไว้; RPM DB ไม่รู้ว่าฉันต้องการอะไร) .. ฉันเฉพาะพูด RHEL4 เพราะมันไม่ได้มีsemanageซึ่งดูเหมือนว่าจะเป็นหนึ่งในวิธีการที่เหมาะสมที่จะทำมัน (เพิ่มนโยบายใหม่แล้วเรียกใช้restoreconในไดเรกทอรีของคุณ%post) ฉันไม่ต้องการบริบทของตัวเองเพียงแค่httpd_cache_tในไดเรกทอรีที่ไม่ได้มาตรฐาน ฉันได้เห็นด้วย "ให้cpioดูแลมันด้วย" - แต่แล้วฉันก็มีปัญหาใหม่ที่ผู้ใช้งานสร้างที่ไม่ใช่รูท RPM ไม่สามารถทำงานchconในไดเรกทอรีสร้างได้ ฉันโกงและมีsudoในไฟล์ข้อมูลจำเพาะ แต่ดูเหมือนจะไม่สำคัญ
14 compiling  rpm  selinux 

6
กำลังมองหาเครื่องมือในการสร้างเดสก์ท็อป linux ที่น้อยที่สุด
มากขึ้นฉันไม่พอใจกับความจริงที่ว่าการกำหนดค่าเดสก์ทอป linux ของฉันมักจะหมายถึงการลบ bloat แทนการเพิ่มและปรับแต่งคุณสมบัติ ฉันได้ข้อสรุปว่าฉันจะเริ่มต้นด้วยสิ่งที่น้อยมากแล้วเพิ่มแพ็คเกจที่ฉันเรียนรู้เกี่ยวกับการใช้งานเพิ่มเติม ดังนั้นฉันกำลังมองหาทั้งการจัดจำหน่ายสก์ท็อปน้อยมากหรือดียิ่งขึ้นเครื่องมือในการสร้างการกระจายเช่น หรือในคำอื่น ๆ ที่ฉันต้องการที่จะเปลี่ยนผู้จัดการแพคเกจที่มีก่อนรันไทม์สร้างเครื่องมือ ผู้จัดการแพคเกจจะไม่เจ็บ แต่ฉันกำลังมองหาการกระจายที่มุ่งเน้นการกำหนดค่าล่วงหน้าขั้นสูงแทนพื้นที่เก็บข้อมูลแพคเกจขนาดใหญ่ ฉันได้ดูการกระจายเดสก์ท็อปน้อยที่สุด แต่พวกเขาทั้งหมดดูเหมือนจะแก้ปัญหาที่แตกต่างกันเช่นถูกออกแบบมาให้ทำงานบนฮาร์ดแวร์รุ่นเก่าหรือเรียกใช้จาก cd / stick / ramfs แต่ฉันไม่ต้องการการกระจายที่น้อยที่สุดเพราะฉันมีฮาร์ดแวร์เก่า แต่เพราะฉันต้องการทราบว่าชิ้นส่วนต่าง ๆ มีจุดประสงค์เพื่ออะไร การเรียกใช้จากหน่วยความจำหลักไม่ได้ช่วยอะไรฉันต้องการสิ่งที่เรียบง่ายและเรียบง่าย เพราะมันปรากฏมีการแจกแจงว่าได้รับการออกแบบสำหรับชนิดของ minimalism ที่ฉันมีในใจทางเลือกที่ชัดเจนจะสร้างลินุกซ์ตั้งแต่เริ่มต้น อย่างไรก็ตามในขณะที่ฉันต้องการให้กระบวนการบิลด์นั้นมีการปรับแต่งสูงมันก็ต้องเป็นแบบอัตโนมัติเพราะฉันจะต้องรันมันหลายครั้งจนกว่าฉันจะมีระบบที่ฉันพอใจ ในขณะที่มีเครื่องมือสำหรับ lfs อยู่ซึ่งสามารถทำให้กระบวนการสร้างเป็นไปได้โดยอัตโนมัติ โดยทั่วไปจะแยกขั้นตอนที่จำเป็นในการสร้างระบบจากเอกสารประกอบแล้วทำโดยอัตโนมัติ ฉันกำลังมองหาบางสิ่งที่แข็งแกร่งและล้ำหน้ากว่าเล็กน้อยและไม่รู้สึกอยากแก้ไข xml หลังจากค้นหาเล็กน้อยฉันพบBuildrootซึ่งมีจุดประสงค์เพื่อสร้างการกระจายแบบฝังตัวแต่ยังอนุญาตให้ติดตั้ง X11 ก่อนที่จะสร้าง toolchain และจากนั้น rootfs บิลด์สามารถกำหนดค่าโดยใช้make menuconfigเหมือนกับ Linux ดูเหมือนว่าฉันจะนึกถึง exacly ยกเว้นว่ามีไว้สำหรับการรวบรวมข้ามระบบฝังตัว สิ่งที่ฉันมีอยู่ในใจในขณะนี้คือการใช้ buildroot แต่ก่อนฉีกออกส่วนที่ฝังตัวทั้งหมดแทนที่ส่วนที่พวกเขามีส่วนที่เกี่ยวข้องจาก lfs …

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 …

2
ฉันจะเปลี่ยนเส้นทาง stderr เท่านั้นได้อย่างไร
ฉันมีปัญหาเล็กน้อยในการทำเช่นนี้ ฉันต้องเรียกใช้ไฟล์. java ที่คอมไพล์แล้วและเปลี่ยนเส้นทางเฉพาะ stderr ไปยังไฟล์ที่เรียกว่าข้อผิดพลาด ดังนั้นไฟล์. java จึงมีชื่อว่า javaProgram.java นี่คือสิ่งที่ฉันได้ลอง: java javaProgram 2> error อย่างไรก็ตามเมื่อฉัน cat error ปรากฏว่ามีสิ่งต่าง ๆ อยู่ในนั้นแม้ว่าฉันจะรู้ว่าไฟล์. java เฉพาะนั้นไม่มีข้อผิดพลาดก็ตาม ฉันกำลังทำอะไรผิดหรือเปล่า? สิ่งที่ฉันต้องการให้ไฟล์แสดงข้อผิดพลาดนี้เป็นข้อผิดพลาดไม่ใช่อย่างอื่น

2
แพ็คเกจที่จะสร้างใหม่หลังจากอัพเกรด gcc บนระบบ gentoo
แพคเกจใดที่ควรสร้างใหม่หลังจากการอัพเกรดgccบนระบบ gentoo เพียงพอหรือไม่ที่จะเรียกใช้ # emerge -a --oneshot `equery depends gcc |awk '{print " ="$1}'` ตามที่แนะนำคล้ายคลึงกันสำหรับ perl ในคำถามที่พบบ่อยนี้หรือไม่

7
รวบรวมรหัสจาก apue
เพียงแค่ตอนนี้ฉันได้เริ่มอ่านหนังสือ: การเขียนโปรแกรมในUNIX®สิ่งแวดล้อมขั้นสูง ฉันต้องการลองใช้ตัวอย่างรหัสแรก ฉันใช้ Scientific Linux 6.4 ฉันดาวน์โหลดซอร์สโค้ดและตามที่ระบุใน README ของมันฉันรัน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. แต่ฉันได้รับข้อผิดพลาดนี้: # …
12 compiling 

1
ทำไม ramdisk เริ่มต้นของฉันใหญ่มาก
ผมใช้ 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เลือกค่าเริ่มต้นสำหรับตัวเลือกใหม่ทั้งหมดแล้วสร้างเคอร์เนล เมื่อดูที่ขนาดไฟล์ภายในแต่ละไฟล์เก็บถาวร cpio ของ initrd ฉันเห็นว่าโมดูล. ko ทั้งหมดของฉันมีขนาดใหญ่กว่าใน 3.1.0 ramdisk มากกว่า 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 (Ubuntu / Linux เหรียญกษาปณ์) Linux os วิธีการสร้างแพ็คเกจไบนารีจากแหล่งที่มา? และฉันสามารถดาวน์โหลดแพ็คเกจไบนารีโดยตรงสำหรับแอปพลิเคชัน (เช่น 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 …

2
ทำไม FreeBSD จึงใช้ GCC ที่มีลิขสิทธิ์ GPL
ทำไม FreeBSD ใช้ GCC เป็นคอมไพเลอร์เริ่มต้น ฉันรู้สึกว่าเสาหลักของปรัชญา FreeBSD นั้นไม่ได้ใช้ซอฟต์แวร์ GNU ใด ๆ โดยเฉพาะอย่างยิ่งรหัส GPL ยัง GCC ซึ่งเป็นทั้ง GNU และ GPL มาพร้อมกับ FreeBSD ทำไม?

3
ทำการรวบรวมต่อไปอย่างไร
ฉันรู้ว่าฉันสามารถขัดจังหวะmakeกระบวนการได้ตลอดเวลาโดยไม่ต้องคอมไพล์ต้นไม้ต้นกำเนิดอีกครั้ง อย่างที่ฉันรู้makeรวบรวมเฉพาะเป้าหมายหากยังไม่ได้รวบรวมหรือรหัสแหล่งที่มามีการแก้ไขหลังจากการรวบรวมครั้งสุดท้าย แต่ถ้าฉันขัดจังหวะmakeจะต้องมีครึ่งหนึ่ง (ขึ้นอยู่กับระดับการทำงานพร้อมกัน) อย่างแน่นอน มันจะมีอะไรทำกับพวกเขาในครั้งต่อไปผมทำงานmake? หรือมันจะเสร็จสิ้นเป้าหมายปัจจุบันเมื่อฉันกดCtrl+ Cเพื่อหลีกเลี่ยงการรวบรวมไบนารีบางส่วน?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.