Skocz do zawartości

Kompilacja Ze źródeł


j-23

Rekomendowane odpowiedzi

Witam.

Mam program pod Windows wraz z jego kodem źródłowy. Znajdują sie tam różne pliki z roserzeniami *.cpp, *.h, *.sh, jest plik 'configure', i dwa pliki Makefile.am i Makefile.in. niestety nie ma żadnej dokumentacji. Jak skompilować blik binarny śmigający pod linuksem?

Nigdy czegoś takiego nie robiłem i nie mam pojęcia jak się do tego zabrać.

Odnośnik do komentarza
Udostępnij na innych stronach

./configure --help doradzi; oczywiście wczesniej musisz jakoś zainstalować GCC, najlepiej skorzystać z cygwin

 

Może niedokładnie się wyraziłem. Chcę to wszystko robić po linuksem. Nie mam Windows.

./configure --help daje:

bash: ./configure: /bin/sh^M: bad interpreter: Nie ma takiego pliku ani katalogu

Odnośnik do komentarza
Udostępnij na innych stronach

Nie jestem programerem, ale wątpię, żeby w prosty sposób można było przekompilować program pod Win na Linuksie. Tzn. tak, żeby program pisany pod Win chodził na Linuksie. Szczególnie jeśli program nie jest konsolowy tylko korzysta z okienek.

Druga sprawa to koniec linii w linuksie i Windows (DOS) - w linuksie to heksadecymalnie 0x0a, w windows/DOS to sekwencja 0x0a 0x0d. "/bin/sh^M" wskazuje, że na początek wszystkie źródła należy przekonwertować na format uniksowy (dos2unix), bo DOSowy/Windowsowy koniec linii widać właśnie jako znak "^M" (0x0d) pod uniksem/linuksem.

A jeśli chcesz przekompilować pod Linuksem jakiś program tak, żeby potem działał pod Windows to... nie wiem :rolleyes: Pewnie są jakieś opcje. Też bym się chętnie dowiedział jak to zrobić :)

Odnośnik do komentarza
Udostępnij na innych stronach

Chyba ciągle źle tłumaczę.

1. mam program *.exe pod Windows do którego dołączono źródła.

2. chcę stworzyć plik binarny działający w (_linuxie_ → Linuksie) ORT.

3. Nie mam Windows więc musiałoby wszystko być wykonane w linuksie.

4. Program nie jest okienkowy. W Windows działa w konsoli, bez graficznych fajerwerków. To coś w rodzaju serwera.

 

Znalazłem nawet taki skrypt, ale tylko na podoby program i robione było w Debianie. Nie zadziałało. Myślałem, że jest jakaś metoda wykonania czegoś takiego.

 

Co do przeróbki plików z końcem linii w formacie DOS podejrzewałem coś takiego.

Po przeróbce i uruchomieniu ./configure dostaję coś takiego:

configure: error: cannot find install-sh or install.sh in config ./config

 

Dodam jeszcze, że program działa z WINE, ale zależy mi oszczędzaniu zasobów, a WINE niestety trochę mi ich pożera.

Odnośnik do komentarza
Udostępnij na innych stronach

Może się dać, ale nie musi. Żeby się powiodło, program nie może korzystać z bibliotek specyficznych dla systemu ani z założeń architektury systemu. Nie muszą to być biblioteki graficzne, ale np. wywołania systemowego API. Założenia architektury -- myślę m.in. o dostępie do usług albo o wkompilowanych na sztywno ścieżkach dostępu.

Jeżeli do źródeł dołączono configure, który wywołuje /bin/sh, to byłbym dobrej myśli. Konwersję \cr\lf na \lf trzeba, jak mówił WalDo, przeprowadzić, bo na razie system nie rozumie Twojego skryptu. A potem próbować.

 

Odnośnik do komentarza
Udostępnij na innych stronach

No dobra.

Przerobiłem plik 'configure' na unix (dos2unix)

Zmieniłen na wykonywalny i odpalam ./configure

dostaję: 'configure: error: cannot find install-sh or install.sh in config ./config'

Cały config.log:

This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by configure, which was
generated by GNU Autoconf 2.59.  Invocation command line was

 $ ./configure 

## --------- ##
## Platform. ##
## --------- ##

hostname = localhost.localdomain
uname -m = i686
uname -r = 2.6.23.1-10.fc7
uname -s = Linux
uname -v = #1 SMP Fri Oct 19 15:39:08 EDT 2007

/usr/bin/uname -p = unknown
/bin/uname -X     = unknown

/bin/arch              = i686
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
hostinfo               = unknown
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: /usr/kerberos/bin
PATH: /usr/local/bin
PATH: /usr/bin
PATH: /bin
PATH: /home/j-23/bin


## ----------- ##
## Core tests. ##
## ----------- ##

configure:1355: error: cannot find install-sh or install.sh in config ./config

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CXXCPP_set=
ac_cv_env_CXXCPP_value=
ac_cv_env_CXXFLAGS_set=
ac_cv_env_CXXFLAGS_value=
ac_cv_env_CXX_set=
ac_cv_env_CXX_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_LUA50_CFLAGS_set=
ac_cv_env_LUA50_CFLAGS_value=
ac_cv_env_LUA50_LIBS_set=
ac_cv_env_LUA50_LIBS_value=
ac_cv_env_PKG_CONFIG_set=
ac_cv_env_PKG_CONFIG_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=
ac_cv_env_host_alias_value=
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=

## ----------------- ##
## Output variables. ##
## ----------------- ##

ACLOCAL=''
AUTOCONF=''
AUTOHEADER=''
AUTOMAKE=''
BOOST_LIBS=''
CC=''
CFLAGS=''
CPPFLAGS=''
CXX=''
CXXCPP=''
CXXFLAGS=''
DEBUG=''
DEFS=''
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP=''
EXEEXT=''
INSTALL_DATA=''
INSTALL_PROGRAM=''
INSTALL_SCRIPT=''
LDFLAGS=''
LIBOBJS=''
LIBS=''
LTLIBOBJS=''
LUA50_CFLAGS=''
LUA50_LIBS=''
MAKEINFO=''
MYSQL_FLAGS=''
MYSQL_LIBS=''
OBJEXT=''
PACKAGE=''
PACKAGE_BUGREPORT=''
PACKAGE_NAME=''
PACKAGE_STRING=''
PACKAGE_TARNAME=''
PACKAGE_VERSION=''
PATH_SEPARATOR=':'
PKG_CONFIG=''
SET_MAKE=''
SHELL='/bin/sh'
USE_MYSQL_FALSE=''
USE_MYSQL_TRUE=''
VERSION=''
XML2_CONFIG=''
XML_CPPFLAGS=''
XML_LIBS=''
ac_ct_CC=''
ac_ct_CXX=''
ac_pt_PKG_CONFIG=''
bindir='${exec_prefix}/bin'
build=''
build_alias=''
build_cpu=''
build_os=''
build_vendor=''
datadir='${prefix}/share'
exec_prefix='NONE'
host=''
host_alias=''
host_cpu=''
host_os=''
host_vendor=''
includedir='${prefix}/include'
infodir='${prefix}/info'
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localstatedir='${prefix}/var'
mandir='${prefix}/man'
oldincludedir='/usr/include'
prefix='NONE'
program_transform_name='s,x,x,'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target=''
target_alias=''
target_cpu=''
target_os=''
target_vendor=''

## ----------- ##
## confdefs.h. ##
## ----------- ##

#define PACKAGE_BUGREPORT ""
#define PACKAGE_NAME ""
#define PACKAGE_STRING ""
#define PACKAGE_TARNAME ""
#define PACKAGE_VERSION ""

configure: exit 1

 

Nigdzie nie ma żadnego z plików install-sh, install.sh ani ./config

Jeśli chciałby ktoś zerknąć na źródła to chętnie podeślę (2,1 MB)

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...