나는 특히 libtool과 같은 GNU autotools와는 관계가 어렵다. 하지만 그들은 이식성과 크로스 컴파일에 관해서 엉덩이를 걷어차 기 때문에 다시 사용하기 시작했습니다.libtool 및 Windows DLL
불행히도 libtool에 적절한 Windows DLL을 구축 할 수 없습니다. 그러나 바닐라와 함께 gcc 은 나를 위해 행복하게 DLL을 만들 것입니다. 예를 들어
: haily DLL을 가져올 라이브러리를 구축 할 것입니다
LIBEXT = .dll
pkzo$(LIBEXT): $(patsubst %.cpp, %.o, $(pkzo_SOURCES)) resources.o
$(CXX) -shared -fPIC $(CXXFLAGS) $^ $(LDFLAGS) -Wl,--out-implib=libpkzo.lib -o [email protected]
. (심지어 성가신 decelspec없이).
그러나 나는 그렇게 같이 libtool을 사용하는 경우 : Libtool의 불평 온다
lib_LTLIBRARIES = libpkzo.la
libpkzo_la_CXXFALGS = ...
libpkzo_la_LDADD = ...
libpkzo_la_SOURCES = ...
:
*** Warning: linker path does not have real file for library -lSDL2main.
*** I have the capability to make that library automatically link in when
*** you link to this library. But I can only do this if you have a
*** shared version of the library, which you do not appear to have
*** because I did check the linker path looking for a file starting
*** with libSDL2main and none of the candidates passed a file format test
*** using a file magic. Last file checked: /usr/local/lib/libSDL2main.a
*** Since this library must not contain undefined symbols,
*** because either the platform does not support them or
*** it was explicitly requested with -no-undefined,
*** libtool will only create a static version of it.
이 잘 libSDL2main.a 정적 라이브러리와 어떤 DLL이없는 것 같아요.
거기에 libtool을 사용하지 않는 automake로 DLL을 빌드하거나 libtool에 아무런 소동을하지 말라고 말하는 방법이 있습니까?
PS : 사람이 그것을 언급하기 전에, 내가 첫 번째 문제를 들어 LT_INIT([shared static win32-dll])
Fedora에서 Quake 복제본을 크로스 컴파일하려고하는 것과 똑같은 문제가 있습니다. 당신이 정한 해결책 아래 upvoted 대답 했습니까? – jdolan
그래서 .. 재미있는 이야기. 몇 시간과이 문제로 골치 아픈 시간을 보낸 후 방금 SDL, SDL_image 및 SDL_ttf 파일을 설치 한 바보 같은 libSDL * .la libtool을 삭제했습니다. 그리고 갑자기 모든 것이 행복하게 다시 연결됩니다. 고마워, libtool. 정말. 잘 했어. – jdolan