Проблемы компиляции программы Windows 64 на Linux - заголовки

0

Я пытаюсь скомпилировать программу Windows 64, MSVAR1.3, в Linux и возникли проблемы с 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
    Я был бы рад опубликовать программу и сообщения об ошибках, если бы я мог понять, как прикреплять файлы - оба слишком длинные, чтобы опубликовать любой из них.
Теги:
gcc
header

2 ответа

2

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

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

  • 0
    Я нашел заголовочные файлы для каждой из строк #include и попытался сообщить, где они использовали флаг -I, но безуспешно. У меня было меньше ошибок, когда я запускал его, используя флаг математической библиотеки, поэтому я очень отчаянно надеялся, что для всех остальных могут быть эквивалентные библиотеки, но в действительности нигде не нашел их списка.
  • 0
    @ user3161904: быстрый Google обнаружил некоторый исходный код для функций gfsr4 и norm4 - не уверен, что они делают то, что вы хотите: reading.ac.uk/Statistics/genetics/software/bayesfst/myutil.c (и .h)
0

Я скомпилировал msvar1.3 с командой:

gcc -o msvar1.3 myutil.c msvar1.3.c -lm

Ещё вопросы

Сообщество Overcoder
Наверх
Меню