Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[ZipLib] Kompilacja ze źródeł

Ostatnio zmodyfikowano 2017-05-20 11:55
Autor Wiadomość
marcolo2307
Temat założony przez niniejszego użytkownika
[ZipLib] Kompilacja ze źródeł
» 2017-05-19 01:34:00
Cześć!

Mam problem z kompilacją biblioteki ZipLib

Nie ma pliku CMakeLists.txt, więc nie mogę wygenerować własnego makefile, a obecny z tego co rozumiem jest pod kompilator clang, a korzystam z mingw.

Plik makefile:
# Final names of binaries
EXECUTABLE = Bin/zipsample
SO_LIBRARY = Bin/libzip.so

# C & C++ compiler
#CC       = gcc
#CXX      = g++-4.8
CC        = clang
CXX       = clang++
CFLAGS    = -fPIC -Wno-enum-conversion -O3
CXXFLAGS  = -fPIC -std=c++11 -O3

# Linker flags
LDFLAGS   = -pthread

# Sources of external libraries
SRC_ZLIB  = $(wildcard Source/ZipLib/extlibs/zlib/*.c)
SRC_LZMA  = $(wildcard Source/ZipLib/extlibs/lzma/unix/*.c)
SRC_BZIP2 = $(wildcard Source/ZipLib/extlibs/bzip2/*.c)

# ZipLib sources
SRC = \
$(wildcard Source/ZipLib/*.cpp)        \
$(wildcard Source/ZipLib/detail/*.cpp)

# Object files
OBJS = \
$(SRC:.cpp=.o)    \
$(SRC_ZLIB:.c=.o)  \
$(SRC_LZMA:.c=.o)  \
$(SRC_BZIP2:.c=.o)

# Rules
all: $(EXECUTABLE) $(SO_LIBRARY)

$(EXECUTABLE): $(OBJS)
$(CXX) $(CXXFLAGS) $(LDFLAGS) Source/Sample/Main.cpp -o $@ $^

$(SO_LIBRARY): $(OBJS)
$(CXX) $(LDFLAGS) -shared -o $@ $^

%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@

%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@

clean:
rm -rf `find Source -name '*.o'` ziplib.tar.gz Bin/*.zip Bin/out* $(EXECUTABLE) $(SO_LIBRARY)

tarball:
tar -zcvf ziplib.tar.gz *

Przy próbie kompilacji za pomocą mingw32-make otrzymuję taki błąd:
clang++ -fPIC -std=c++11 -O3 -c Source/ZipLib/ZipArchive.cpp -o Source/ZipLib/ZipArchive.o
process_begin: CreateProcess(NULL, clang++ -fPIC -std=c++11 -O3 -c Source/ZipLib/ZipArchive.cpp -o Source/ZipLib/ZipArchive.o, ...) failed.
make (e=2): Nie można odnaleźć określonego pliku.
Makefile:43: recipe for target 'Source/ZipLib/ZipArchive.o' failed
mingw32-make: *** [Source/ZipLib/ZipArchive.o] Error 2

W paczce znajdują się także projekty dla Visuala, które działają.

Czy to problem z tym, że makefile jest zrobiony pod clang? Mogę to jakoś skompilować pod mingw?
P-161280
DejaVu
» 2017-05-19 10:15:13
Jeżeli kompilujesz pod linuxem to zweryfikuj czy małe i wielkie znaki się zgadzają. Komunikat sugeruje, że jakiegoś pliku nie może znaleźć.
P-161284
j23
» 2017-05-19 10:37:57
@DejaVu, MinGW pod Linuksem?
P-161286
marcolo2307
Temat założony przez niniejszego użytkownika
» 2017-05-19 11:30:59
Korzystam z Windows 10, nie ja pisałem makefile. Ściągnąłem całą paczkę z strony biblioteki. Nie znam się na makefile, próbowałem jedynie wywołać mingw32-make w katalogu z makefile.
P-161289
j23
» 2017-05-19 12:51:26
Zmień to:
# C & C++ compiler
CC       = gcc
CXX      = g++
#CC        = clang
#CXX       = clang++
CFLAGS    = -fPIC -Wno-enum-conversion -O3
CXXFLAGS  = -fPIC -std=c++11 -O3
P-161296
marcolo2307
Temat założony przez niniejszego użytkownika
» 2017-05-19 13:11:46
C:\Users\marco\Desktop\ziplib>mingw32-make
g++ -fPIC -std=c++11 -O3 -c Source/ZipLib/ZipArchive.cpp -o Source/ZipLib/ZipArchive.o
Source/ZipLib/ZipArchive.cpp:1:0: warning: -fPIC ignored for target (all code is position independent)
 #include "ZipArchive.h"
 ^
Makefile:43: recipe for target 'Source/ZipLib/ZipArchive.o' failed
mingw32-make: *** [Source/ZipLib/ZipArchive.o] Error 1

C:\Users\marco\Desktop\ziplib>mingw32-make
g++ -fPIC -std=c++11 -O3 -c Source/ZipLib/ZipArchive.cpp -o Source/ZipLib/ZipArchive.o
Source/ZipLib/ZipArchive.cpp:1:0: warning: -fPIC ignored for target (all code is position independent)
 #include "ZipArchive.h"
 ^
Makefile:43: recipe for target 'Source/ZipLib/ZipArchive.o' failed
mingw32-make: *** [Source/ZipLib/ZipArchive.o] Error 1

Dodatkowo pojawia się komunikat: "Nie znaleziono punktu wejścia procedury __printf__ w bibliotece D:/.../mingw32/bin/as.exe.
P-161297
DejaVu
» 2017-05-19 18:02:53
Zapewne musisz dodać makra, skoro pokazuje, że nie wie co to jest __printf__. Przypuszczam, że trzeba zdefiniować makra w stylu:
C/C++
#define __printf__ printf
P-161305
marcolo2307
Temat założony przez niniejszego użytkownika
» 2017-05-19 18:09:31
Dodałem
-D __printf__=printf
 do CFLAGS, ale nic to nie zmieniło.

Wydaje mi się, że najłatwiej byłoby gdybym mógł stworzyć własny plik CMakeLists.txt, dużo będzie z tym roboty? W sumie to mam chyba tylko pliki .c/.cpp i nic więcej ;/

Edit: z tego co zauważyłem to w ogóle nie działa mi cmake, przy próbie kompilacji samego zlib jest to samo (as.exe). Nie pomógł ani reinstall codeblocks razem z mingw ani reinstall cmake'a.
P-161306
« 1 » 2 3
  Strona 1 z 3 Następna strona