Я пытаюсь скомпилировать программу 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'
Ошибки "неопределенной ссылки" относятся не к отсутствующим заголовкам - они являются ошибками компоновщика, указывающими, что вы не связываетесь с объектом, и не имеете флаг -l (минус ell), указывающий библиотеку, которая экспортирует эти символы. Заголовки представляют собой только обещание, что переменные и функции -l, соответствующие объявлениям заголовков, будут найдены в объекте/библиотеке, которую вы предоставляете во время ссылки, - вы нарушаете это обещание.
Вам нужно либо найти библиотеки, содержащие эти символы, либо найти источник и скомпилировать их.
Я скомпилировал msvar1.3 с командой:
gcc -o msvar1.3 myutil.c msvar1.3.c -lm
gcc -Wall -g
и показать нам код, который вы компилируете (не только первые несколько директив#include
этого ...)