Guten Tag,
So, ich habe folgendes Problem. Ich möchte eine selbstgeschrieben DLL auf Linux cross compilen.
Soweit so gut. Habe mingw32 via apt installiert und getestet.
Habe das/die Makefile von Dev-Cpp abgeändert, da die DLL ursprünglich ein Dev-Cpp Projekt war.
Hier das/die Makefile:
So das hier ist nun die Ausgabe von make:
Was mich wundert ist, dass er ld anstelle von i586-mingw32msvc-ld verwenden will.
Habe ich schon mal /usr/bin/ld in ld.old umgenannt und i586...-ld nach /usr/bin/ld gelinkt.
Dann kommt folgender Fehler:
Danke schonmal für die Hilfe im vorraus.
MfG
pit
So, ich habe folgendes Problem. Ich möchte eine selbstgeschrieben DLL auf Linux cross compilen.
Soweit so gut. Habe mingw32 via apt installiert und getestet.
Habe das/die Makefile von Dev-Cpp abgeändert, da die DLL ursprünglich ein Dev-Cpp Projekt war.
Hier das/die Makefile:
Code:
# Project: cosmo
# Makefile created by Dev-C++ 4.9.9.1 edited by pit 1.0 ;)
CPP = i586-mingw32msvc-g++
CC = i586-mingw32msvc-gcc
WINDRES = i586-mingw32msvc-windres
RES =
OBJ = dllmain.o dllsql.o $(RES)
LINKOBJ = dllmain.o dllsql.o $(RES)
LIBS = -L/usr/i586-mingw32msvc/lib -lmySQL --no-export-all-symbols --add-stdcall-alias
INCS = -I/usr/i586-mingw32msvc/include
CXXINCS = -I/usr/i586-mingw32msvc/include/c++/3.3.1 -I/usr/i586-mingw32msvc/include/c++/3.3.1/mingw32 -I/usr/i586-mingw32msvc/include/c++/3.3.1/backward -I/usr/i586-mingw32msvc/include
BIN = cosmo.dll
CXXFLAGS = $(CXXINCS) -DBUILDING_DLL=1 -Wall
CFLAGS = $(INCS) -DBUILDING_DLL=1 -Wall
.PHONY: all all-before all-after clean clean-custom
all: all-before cosmo.dll all-after
clean: clean-custom
rm -f $(OBJ) $(BIN)
DLLWRAP=i586-mingw32msvc-dllwrap
DEFFILE=libcosmo.def
STATICLIB=libcosmo.a
$(BIN): $(LINKOBJ)
$(DLLWRAP) --output-def $(DEFFILE) --driver-name c++ --implib $(STATICLIB) $(LINKOBJ) $(LIBS) -o $(BIN)
dllmain.o: dllmain.cpp
$(CPP) -c dllmain.cpp -o dllmain.o $(CXXFLAGS)
dllsql.o: dllsql.cpp
$(CPP) -c dllsql.cpp -o dllsql.o $(CXXFLAGS)
So das hier ist nun die Ausgabe von make:
Code:
pit@tioz:~/cosmo$ make
i586-mingw32msvc-g++ -c dllmain.cpp -o dllmain.o -I/usr/i586-mingw32msvc/include/c++/3.3.1 -I/usr/i586-mingw32msvc/include/c++/3.3.1/mingw32 -I/usr/i586-mingw32msvc/include/c++/3.3.1/backward -I/usr/i586-mingw32msvc/include -DBUILDING_DLL=1 -Wall
i586-mingw32msvc-g++ -c dllsql.cpp -o dllsql.o -I/usr/i586-mingw32msvc/include/c++/3.3.1 -I/usr/i586-mingw32msvc/include/c++/3.3.1/mingw32 -I/usr/i586-mingw32msvc/include/c++/3.3.1/backward -I/usr/i586-mingw32msvc/include -DBUILDING_DLL=1 -Wall
i586-mingw32msvc-dllwrap --output-def libcosmo.def --driver-name c++ --implib libcosmo.a dllmain.o dllsql.o -L/usr/i586-mingw32msvc/lib -lmySQL --no-export-all-symbols --add-stdcall-alias -o cosmo.dll
i586-mingw32msvc-dllwrap: no export definition file provided.
Creating one, but that may not be what you want
/usr/bin/ld: unrecognized option '--base-file'
/usr/bin/ld: use the --help option for usage information
collect2: ld returned 1 exit status
i586-mingw32msvc-dllwrap: c++ exited with status 1
make: *** [cosmo.dll] Fehler 1
Was mich wundert ist, dass er ld anstelle von i586-mingw32msvc-ld verwenden will.
Habe ich schon mal /usr/bin/ld in ld.old umgenannt und i586...-ld nach /usr/bin/ld gelinkt.
Dann kommt folgender Fehler:
Code:
tioz:/home/pit/cosmo# make
i586-mingw32msvc-g++ -c dllmain.cpp -o dllmain.o -I/usr/i586-mingw32msvc/include/c++/3.3.1 -I/usr/i586-mingw32msvc/include/c++/3.3.1/mingw32 -I/usr/i586-mingw32msvc/include/c++/3.3.1/backward -I/usr/i586-mingw32msvc/include -DBUILDING_DLL=1 -Wall
i586-mingw32msvc-g++ -c dllsql.cpp -o dllsql.o -I/usr/i586-mingw32msvc/include/c++/3.3.1 -I/usr/i586-mingw32msvc/include/c++/3.3.1/mingw32 -I/usr/i586-mingw32msvc/include/c++/3.3.1/backward -I/usr/i586-mingw32msvc/include -DBUILDING_DLL=1 -Wall
i586-mingw32msvc-dllwrap --output-def libcosmo.def --driver-name c++ --implib libcosmo.a dllmain.o dllsql.o -L/usr/i586-mingw32msvc/lib -lmySQL --no-export-all-symbols --add-stdcall-alias -o cosmo.dll
i586-mingw32msvc-dllwrap: no export definition file provided.
Creating one, but that may not be what you want
/usr/bin/ld: unrecognised emulation mode: elf_i386
Supported emulations: i386pe
collect2: ld returned 1 exit status
i586-mingw32msvc-dllwrap: c++ exited with status 1
make: *** [cosmo.dll] Fehler 1
Danke schonmal für die Hilfe im vorraus.

MfG
pit