Frage

Ich schreibe eine gemeinsame Bibliothek mit Autoconf/libtool, die ich für Linux und Windows (mit dem Mingw Cross-Compiler) kompilieren möchte. Für Linux (und vielleicht andere Plattformen, die es unterstützen) muss ich -fpic einstellen. Also stecke ich es in die CFLAGs in makefile.am. Aber wenn ich es mit Mingw zusammenkompiliere, beschwert sich GCC mit einer Warnung:

warning: -fPIC ignored for target (all code is position independent)

Für Windows -Code wird diese Option offensichtlich nicht benötigt. Es ist nur eine Warnung, aber ich möchte sie trotzdem loswerden. Wie kann ich das machen? Vielleicht gibt es bereits eine Libtool/Autoconf -Funktion, die überprüft, ob die Option unterstützt wird und sie nur bei Bedarf festlegt, sodass ich dies nicht manuell in makefile.am machen muss?

War es hilfreich?

Lösung

Sie sollten nicht einstellen müssen -fPIC manuell, libtool Fügt es hinzu, wenn Sie es sagen, welche Art von Binär-/Bibliothek Sie bauen.

lib_LTLIBRARIES = mylibrary.la
mylibrary_la_SOURCES = mylibrary.c

Dies kann beide erzeugen mylibrary.so mit Bild (falls erforderlich) und a mylibrary.a Ohne abhängig von anderen Autokonf-/Automobiloptionen. (Wahrscheinlich so etwas wie .dll und .lib unter Windows, aber ich benutze diese Plattform nicht.)

Andere Tipps

Ich habe Folgendes in configure.ac verwendet, um -fpic bedingt hinzuzufügen:

AC_MSG_CHECKING(whether fPIC compiler option is accepted)
SAVED_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fPIC -Werror"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return 0;])],
    [AC_MSG_RESULT(yes)
     CFLAGS="$SAVED_CFLAGS -fPIC"],
    [AC_MSG_RESULT(no)
     CFLAGS="$SAVED_CFLAGS"])
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top