ไม่พบ -lgfortran


12

ฉันพยายามติดตั้งแพ็คเกจใน R (แพ็คเกจ "ks") มันล้มเหลวด้วยข้อความผิดพลาด:

/usr/bin/ld: cannot find -lgfortran

ฉันได้ติดตั้งแพ็คเกจสร้างสิ่งจำเป็นสำหรับ Ubuntu แล้ว:

sudo apt-get install build-essential

ฉันได้ลองเพิ่มลิงค์สัญลักษณ์:

sudo ln -s /usr/lib/x86_64-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so
sudo ln -s /usr/lib/libgfortran.so.3.0.0 /usr/lib/libgfortran.so
sudo ldconfig

ฉันใช้ gcc และ g ++ เป็นประจำ แต่ยังไม่มีเหตุผลที่จะใช้ gfortran

ฉันเคยเห็นคนอื่นที่มีปัญหานี้ใน gcc-4.7 ( http://ubuntuforums.org/showthread.php?t=2123821 ) ดังนั้นฉันสงสัยว่านี่มาจากการติดตั้ง gcc-4.7 ด้วยตนเอง ผมทำตามสูตรจากคำตอบที่ได้รับการยอมรับที่นี่ที่นี่และที่นี่ที่นี่

กำลังlsb_release -aพิมพ์

Ubuntu 12.04.2 LTS

และการuname -rพิมพ์

3.2.0-39 ทั่วไป-pae

ใครสามารถให้คำแนะนำว่าทำไมldไม่ทำงาน?


1
คุณพยายามสร้างลิงก์สัญลักษณ์กับไลบรารีรันไทม์ไม่ใช่ลิงก์ที่ตัวเชื่อมโยงต้องการ (* .a dev libs) ดูเหมือนว่าปัญหาเส้นทาง
Andrejs Cainikovs

คำตอบ:


5

คุณต้องติดตั้ง gfortran ข้อผิดพลาดชี้ให้เห็นว่า lib แบบคงที่สำหรับการเชื่อมโยงเวลาบิลด์จะไม่หายไปไม่ใช่ libs แบบไดนามิกที่คุณพยายามปรับ


เมื่อฉันลองsudo apt-get install gfortranฉันจะได้รับ0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.... คิดอะไรบ้าง?
ผู้ใช้

ในระบบของฉันฉันได้dpkg -S /usr/lib/gcc/x86)64-linux-gnu/4.6/libgfortran.aรับคำตอบว่านี่มาจากgfortran-4.6แพ็คเกจ Gcc กำลังมองหาไฟล์. a หากคุณติดตั้งเวอร์ชัน gcc อื่นตัวเชื่อมโยงจะค้นหาในไดเรกทอรีที่มีชื่อคล้ายกันสำหรับ libgfortran.a
rfindeis

ดูเหมือนคำตอบที่ถูกต้อง
Andrejs Cainikovs

สัญลักษณ์การลิงก์ไลบรารี 4.6 สำหรับคอมไพเลอร์ 4.7 อาจใช้งานได้ ยังผ่านเส้นทางที่ถูกต้องด้วย-L(ซึ่งส่วนใหญ่เหมือนกัน) หากสิ่งนี้ล้มเหลวคุณต้องติดตั้ง gfortran เวอร์ชัน 4.7 จาก ppa ที่คุณใช้สำหรับ gcc 4.7 ตอนนี้คุณมีเวอร์ชัน gfortran อะไรบ้าง?
rfindeis

ฉันต้องการใช้เคล็ดลับเดียวกับการติดตั้ง gcc-4.7 เพื่อติดตั้ง gfortran-4.7
ผู้ใช้

9

คำอธิบายเพิ่มเติมเล็กน้อยเกี่ยวกับคำตอบของ Cloud Oliver

ค้นหาเวอร์ชัน gcc ที่ใช้งานในปัจจุบันผ่านคำสั่งนี้

$sudo update-alternatives --config gcc

* 2            /usr/bin/gcc-4.7   60        manual mode

รายการที่มีการ*บอกว่าใช้ GCC เวอร์ชันใด เพียงกด Enter เพื่อคงการตั้งค่าปัจจุบัน

หากพิมพ์ "ไม่มีทางเลือกสำหรับ gcc" คุณอาจต้องใช้คำสั่งนี้เพื่อค้นหาเวอร์ชัน:

apt-cache policy gcc
  1. cd เป็นไดเรกทอรี gcc ด้านขวา (แทนที่หมายเลขรุ่นด้วยของคุณ):

    cd /usr/lib/gcc/x86_64-linux-gnu/4.7/
    
  2. คุณสามารถค้นหาlibgfortran.aด้วยคำสั่งต่อไปนี้ (ไม่จำเป็น) ในกรณีของฉันมันมีอยู่ใน/usr/lib/gcc/x86_64-linux-gnu/4.8/ไดเรกทอรี

    find /usr/lib/gcc/x86_64-linux-gnu/ -name libgfortran.a
    
  3. สร้าง symlink:

    sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a libgfortran.a
    

7

สิ่งที่ฉันทำฉันจะตรวจสอบอูบุนตูว่ารุ่น g ++, gcc และ g เหมือนกันหรือไม่

ฉันเดาว่ามันจะดีกว่าถ้าคุณมีทั้งสามรุ่นเดียวกัน

# first check the versions:
gcc --version
g++ --version
gfortran --version

# If versions are different, then install:
sudo apt-get update
apt-get install gcc-4.9 g++-4.9 gfortran-4.9

สำหรับฉันนี้แก้ไขปัญหาทั้งหมดที่ฉันกำลังเผชิญในขณะติดตั้งแพคเกจ "TTR" ใน R โดยใช้ RStudio บน Ubuntu


1
นี่คือทางออกที่ถูกต้อง วิธีการแก้ปัญหาข้างต้นทั้งหมดไม่ได้ผลสำหรับฉัน
Yonatan Simson

1
ฉันใช้ gcc 6.5 แต่วิธีการเดียวกันนี้แก้ไขปัญหาได้ แหล่งเดียวกันที่น่าสนใจ: แพ็คเกจ R ที่ไม่ชัดเจน
ยูเอฟโอ

ใช่นี่เป็นทางออกที่ดีที่สุดวิธีหนึ่งที่ฉันนึกได้
Manoj Kumar

4

สารละลาย:

cd /usr/lib/gcc/x86_64-linux-gnu/4.6
sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a libgfortran.a

คุณช่วยเพิ่มรายละเอียดเล็กน้อยได้ไหม? อาจจะเป็นcdเส้นแยกอย่างน้อยที่สุด?
Volker Siegel

2
กรุณาเพิ่มคำอธิบาย ผู้คนไม่ควรใช้คำสั่งที่พวกเขาค้นหาบนอินเทอร์เน็ต ดังนั้นโปรดอย่าเขียนมันด้วย
s3lph

ขอบคุณนี่แก้ไขได้สำหรับฉัน! ในกรณีของฉันมันเป็นcd /usr/lib/gcc/x86_64-linux-gnu/4.9.3แล้ว sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a libgfortran.a
Zhubarb
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.