Предоставленная учителем библиотека для x86_64 несовместима с моей системой

Мне дали задание в школе, и в моей лекции говорилось, что нам нужно использовать его предварительно скомпилированную библиотеку C, которая содержит важное определение функции.

Я попытался удалить все текущие файлы *.o из каталога, в настоящее время их там нет.

Проблема у меня в настоящее время заключается в следующем:

   i386:x86-64 architecture of input file `libnavigation.a(great_circle.o)' is    incompatible     with i386 output

где libnavigation.a — имя библиотеки, содержащей функцию great_circle.

имя-ма

Linux chris-SATELLITE-PRO-C850 3.8.0-19-generic #29-Ubuntu SMP Wed Apr 17 18:19:42 UTC 2013 i686 i686 i686 GNU/Linux

Я попытался добавить несколько параметров команды в gcc

  1. -m32 приводит к той же ошибке:
  2. -m64 приводит к ошибке:

     gcc     -o dist/Debug/GNU-Linux-x86/c_assignment build/Debug/GNU-Linux-  
     x86/line_counter.o build/Debug/GNU-Linux-x86/main.o build/Debug/GNU-Linux-  
     x86/mayday.o  
    
     build/Debug/GNU-Linux-x86/rescue_assets.o build/Debug/GNU-Linux-x86/ship.o 
    
    build/Debug/GNU-
    
    Linux-x86/system_handler.o libnavigation.a -lm -m64
    /usr/bin/ld: cannot find crt1.o: No such file or directory
    /usr/bin/ld: cannot find crti.o: No such file or directory
    /usr/bin/ld: cannot find -lm
    /usr/bin/ld: skipping incompatible /usr/lib/gcc/i686-linux-gnu/4.7/libgcc.a when 
    
    searching for -lgcc
    /usr/bin/ld: cannot find -lgcc
    /usr/bin/ld: skipping incompatible /usr/lib/gcc/i686-linux-gnu/4.7/libgcc_s.so when   
    
    searching for -lgcc_s
    /usr/bin/ld: cannot find -lgcc_s
    /usr/bin/ld: cannot find -lc
    /usr/bin/ld: skipping incompatible /usr/lib/gcc/i686-linux-gnu/4.7/libgcc.a when        
    
    searching for -lgcc
    /usr/bin/ld: cannot find -lgcc
    /usr/bin/ld: skipping incompatible /usr/lib/gcc/i686-linux-gnu/4.7/libgcc_s.so when 
    
    searching for -lgcc_s
    /usr/bin/ld: cannot find -lgcc_s
    /usr/bin/ld: cannot find crtn.o: No such file or directory
    

я не уверен, как продвигаться дальше, я спросил учителя, но ответа пока нет.

Спасибо, Крис.


person chris edwards    schedule 26.11.2013    source источник
comment
Если вы работаете в 32-битной системе и у вас есть 64-битная библиотека, вы мало что можете сделать.   -  person Matteo Italia    schedule 26.11.2013
comment
предоставленная библиотека была сделана с использованием x86_64 linux. я думал, что это 64-битный Linux для 32-битных систем?   -  person chris edwards    schedule 26.11.2013
comment
Объясните проблему своему лектору и попросите 32-битную версию.   -  person Gareth    schedule 26.11.2013
comment
x86_64 предназначен для 64-битных систем. Общее практическое правило в ваших классах - всегда предполагать, что вы работаете в 64-битных системах. Если не указано иное, или если вы работаете со встроенными системами   -  person MangO_O    schedule 26.11.2013
comment
@chris: не имеет смысла создавать 64-битную ОС для 32-битных машин. x86_64 — это одно из имен, используемых для 64-битной архитектуры, используемой в настоящее время в большинстве обычных компьютеров (она так называется, поскольку является 64-битным расширением более старого семейства x86).   -  person Matteo Italia    schedule 26.11.2013
comment
ах, я понимаю, я думал, что это могло быть так, ура.   -  person chris edwards    schedule 26.11.2013


Ответы (2)


Отсюда есть два пути

  1. Попросите учителя собрать 32-битную библиотеку.
  2. Используйте 64-битный линукс

64-разрядные библиотеки предназначены для 64-разрядных компьютеров, а 32-разрядные библиотеки предназначены для 32-разрядных компьютеров.
Вот почему разработчики программного обеспечения прилагают дополнительные усилия для создания 64-разрядного программного обеспечения, поскольку 64-разрядное оборудование стало обычным явлением. использовать.

person Prashant Kumar    schedule 26.11.2013
comment
немного больно, я думал, что они скомпилировали его для 32-битной версии, так как школьные компьютеры работают под управлением 32-битной ОС. - person chris edwards; 26.11.2013

Похоже, вы используете Toshiba SATELLITE PRO C850. Все ноутбуки этого семейства оснащены 64-битным процессором.

Я бы порекомендовал переустановить ОС, выбрав 64-битную версию. Обратите внимание, что 64-битная ОС может запускать 32-битный код.

Если вы не хотите или вам не разрешено переустанавливать, а ваш процессор — Intel i3 или i5. У вас все еще есть возможность установить VirtualBox и создать в нем 64-битную виртуальную машину, где вы сможете использовать 64-битную библиотеку.

person jlliagre    schedule 26.11.2013