make make
을 사용하여 Mac OS X 10.8에서 FreeImage 3.1.5.4를 빌드 할 때 다음 오류 g++-4.0: No such file or directory
이 발생합니다. 컴파일러 구성과 관련하여 makefile에 문제가 있습니다. 이 문제를 해결하는 방법?Mac OS X 10.8에서 FreeImage를 컴파일하는 방법은 무엇입니까?
3
A
답변
6
FreeImage 3.1.5.4의 makefile.osx
은 OS X 버전 10.6 이상입니다. 수정 된 버전에 대한이 게시물의 하단을 참조하십시오. X 10.8 OS에 대한
#include <cstring>
메이크 :
:
# -*- Makefile -*-
# Mac OSX makefile for FreeImage
# This file can be generated by ./gensrclist.sh
include Makefile.srcs
# General configuration variables:
CC_X86_64 = gcc -4.2
CPP_X86_64 = g++ -4.2
COMPILERFLAGS = -Os -fexceptions -fvisibility=hidden -DNO_LCMS
COMPILERFLAGS_X86_64 = -arch x86_64
COMPILERPPFLAGS = -Wno-ctor-dtor-privacy
INCLUDE +=
INCLUDE_X86_64 = -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
CFLAGS_X86_64 = $(COMPILERFLAGS) $(COMPILERFLAGS_X86_64) $(INCLUDE) $(INCLUDE_X86_64)
CPPFLAGS_X86_64 = $(COMPILERPPFLAGS) $(CFLAGS_X86_64)
LIBRARIES_X86_64 = -Wl,-syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk
LIBTOOL = libtool
LIPO = lipo
TARGET = freeimage
STATICLIB = lib$(TARGET).a
SHAREDLIB = lib$(TARGET)-$(VER_MAJOR).$(VER_MINOR).dylib
LIBNAME = lib$(TARGET).$(VER_MAJOR).dylib
HEADER = Source/FreeImage.h
.SUFFIXES: .o-x86_64
MODULES_X86_64 = $(SRCS:.c=.o-x86_64)
MODULES_X86_64 := $(MODULES_X86_64:.cpp=.o-x86_64)
PREFIX = /usr/local
INSTALLDIR = $(PREFIX)/lib
INCDIR = $(PREFIX)/include
default: all
all: dist
dist: FreeImage
cp *.a Dist
cp *.dylib Dist
cp Source/FreeImage.h Dist
FreeImage: $(STATICLIB) $(SHAREDLIB)
$(STATICLIB): $(STATICLIB)-x86_64
$(LIPO) -create $(STATICLIB)-x86_64 -output $(STATICLIB)
$(STATICLIB)-x86_64: $(MODULES_X86_64)
$(LIBTOOL) -arch_only x86_64 -o [email protected] $(MODULES_X86_64)
$(SHAREDLIB): $(SHAREDLIB)-x86_64
$(LIPO) -create $(SHAREDLIB)-x86_64 -output $(SHAREDLIB)
$(SHAREDLIB)-x86_64: $(MODULES_X86_64)
$(CPP_X86_64) -arch x86_64 -dynamiclib $(LIBRARIES_X86_64) -o [email protected] $(MODULES_X86_64)
.c.o-x86_64:
$(CC_X86_64) $(CFLAGS_X86_64) -c $< -o [email protected]
.cpp.o-x86_64:
$(CPP_X86_64) $(CPPFLAGS_X86_64) -c $< -o [email protected]
install:
install -d -m 755 -o root -g wheel $(INCDIR) $(INSTALLDIR)
install -m 644 -o root -g wheel $(HEADER) $(INCDIR)
install -m 644 -o root -g wheel $(SHAREDLIB) $(STATICLIB) $(INSTALLDIR)
ranlib -sf $(INSTALLDIR)/$(STATICLIB)
ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(LIBNAME)
clean:
rm -f core Dist/*.* u2dtmp* $(MODULES_X86_64) $(STATICLIB) $(SHAREDLIB) $(SHAREDLIB)-x86_64
1
를 크리스토프의 대답에 추가로 또한 당신이 Source/OpenEXR/IlmImf/ImfAutoArray.h
에 한 줄을 추가해야 문제가 FreeImage issue tracker에 설명 해결하기 대답에서 언급 된 GCC 4.2
은 꽤 오래되었고 FreeImage
은 Clang
을 사용하여 매우 잘 컴파일됩니다. 그래서 Clang
툴체인으로 전환하는 것이 좋습니다.
네가 맞아! 그러나 나는 이것이 의견으로서 더 나을 것이라고 생각한다. – Christoph