2014-01-05 3 views
0

Я пытаюсь скомпилировать программу Windows 64 MSVAR1.3 на Linux и возникли проблемы с Linux и заголовками, которые вызывает программа. Программа предусматривает:Проблемы с компиляцией программы Windows 64 на linux - заголовки

#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
#include <math.h> 
#ifdef __BORLANDC__ 
    #include <float.h> 

При запуске компиляции (с помощью GCC в Linux) и попытаться использовать флаг -I, чтобы сказать ему, где заголовки, он не становится лучше, чем если бы я бегу компиляция без заголовков. Я включил некоторые из результатов ниже (я получаю почти 300 строк нераспознанных переменных).

Я также попытался запустить его с флагом -lm для математической библиотеки, и это уменьшает непризнанные ошибки, но если есть флаги, относящиеся к библиотекам для других заголовков, я не смог их найти. ПОЖАЛУЙСТА ПОМОГИ!!!!

(ошибки от запуска с помощью -I флаг :)

gcc msvar1.3.c -o msvar1.3 -lm/tmp/ccpZIkC1.o: In function `main': 
msvar1.3.c:(.text+0x38): undefined reference to `opengfsr' 
msvar1.3.c:(.text+0x927): undefined reference to `gfsr8' 
msvar1.3.c:(.text+0x94c): undefined reference to `gfsr8' 
msvar1.3.c:(.text+0x971): undefined reference to `gfsr8' 
msvar1.3.c:(.text+0x9a2): undefined reference to `disrand' 
msvar1.3.c:(.text+0x111a): undefined reference to `printerr' 
msvar1.3.c:(.text+0x1809): undefined reference to `printerr' 
msvar1.3.c:(.text+0x1ad2): undefined reference to `printerr' 
msvar1.3.c:(.text+0x1be6): undefined reference to `gfsr8' 
msvar1.3.c:(.text+0x2773): undefined reference to `closegfsr' 
msvar1.3.c:(.text+0x2791): undefined reference to `closegfsr' 
/tmp/ccpZIkC1.o: In function `treesummary': 
msvar1.3.c:(.text+0x2808): undefined reference to `printerr' 
/tmp/ccpZIkC1.o: In function `read_params': 
msvar1.3.c:(.text+0x2b1f): undefined reference to `printerr' 
msvar1.3.c:(.text+0x2b64): undefined reference to `printerr' 
msvar1.3.c:(.text+0x2b72): undefined reference to `intrand' 
msvar1.3.c:(.text+0x2bb7): undefined reference to `printerr' 
msvar1.3.c:(.text+0x3000): undefined reference to `printerr' 
msvar1.3.c:(.text+0x3063): undefined reference to `printerr' 
msvar1.3.c:(.text+0x3077): undefined reference to `printerr' 
/tmp/ccpZIkC1.o: In function `choosepar': 
msvar1.3.c:(.text+0x36fb): undefined reference to `gfsr8' 
msvar1.3.c:(.text+0x374b): undefined reference to `gfsr4' 
msvar1.3.c:(.text+0x3799): undefined reference to `gfsr4' 
msvar1.3.c:(.text+0x37b8): undefined reference to `norm4' 
msvar1.3.c:(.text+0x37e5): undefined reference to `gfsr4' 
msvar1.3.c:(.text+0x3826): undefined reference to `norm4' 
msvar1.3.c:(.text+0x3853): undefined reference to `gfsr4' 
msvar1.3.c:(.text+0x3894): undefined reference to `norm4' 
msvar1.3.c:(.text+0x38f7): undefined reference to `norm4' 
+0

Вы не должны пытаться составить программу для Windows 64 на Linux. Вы можете захотеть * передать * некоторый код в Linux, и это часто требует * изменения * исходного кода. И вы должны скомпилировать с помощью 'gcc -Wall -g' и показать нам код, который вы компилируете (не только первые несколько директив' # include') ... –

+0

Я был бы рад опубликовать программу и ошибку если я мог бы выяснить, как прикреплять файлы - оба слишком длинны, чтобы опубликовать их. – user3161904

ответ

2

«неопределенные ссылки на» ошибки не из недостающих заголовков - они ошибки компоновщика показывая, что вы не связать с объектом, не может иметь a -l (минус ell) флаг, указывающий библиотеку, которая экспортирует эти символы. Заголовки только представляют собой обещание, что переменные и функции вне линии, соответствующие объявлениям заголовков, будут найдены в объекте/библиотеке, которую вы предоставляете во время ссылки, - вы нарушаете это обещание.

Вам нужно либо найти библиотеки, содержащие эти символы, либо найти источник и скомпилировать их.

+0

Я нашел файлы заголовков для каждой строки #include и попытался сказать, где они использовали флаг -I без успеха. У меня было меньше ошибок, когда я запускал его с помощью флага математической библиотеки, поэтому я довольно отчаянно надеялся, что могут быть эквивалентные библиотеки для каждого из других, но на самом деле они не нашли их нигде. – user3161904

+0

@ user3161904: быстрый Google включил некоторый исходный код для функций gfsr4 и norm4 - не уверен, что они делают то, что вы хотите: http://www.reading.ac.uk/Statistics/genetics/software/bayesfst/myutil. c (и .h) –

Смежные вопросы