CMake und Linker-Optionen?



  • Hallo zusammen (mein erstes Posting...),

    ich habe mich gefragt, wie ich mit CMake den Linker beeinflussen kann, konkret wie ich "unresolved symbols" erlauben kann. Das muss unbedingt portabel funktionieren.

    Folgender Hintergrund:
    ich möchte für IDL (Interactive Data Language von ITT, nicht Interface Definition L.) ein in deren Sprache sogennantes DLM (dynamically loadable module) schreiben.
    Das ist eine shared lib mit einer best. API, welche zur Laufzeit geladen (und offenbar initialisiert) wird. Diese benötigt jedoch ihrerseits die Programmbibliothek von IDL, um kompatible Objekte zu erzeugen.
    Wenn ich jetzt mein DLM baue und nicht linke, meckert der Compiler (MinGW). Wenn ich das DLM gegen die Programmbibliothek linke, dann klappt's, aber beim Laden des DLM in IDL zur Laufzeit bekomme ich die Fehlermeldung, dass die Programmbibliothek mehrfach versucht wurde, zu initialisieren.

    Ein Blick in ein mitgeliefertes Beispielmakefile förderte soetwas zutage:

    all : 
    	@echo "OS type detected: "`uname`
    	@case `uname` in \
    [...]
    	   "Linux" ) make testmodule \
    			"X_CFLAGS= -fPIC" \
    			"X_LD_FLAGS= -shared -Bsymbolic --warn-once -noinhibit-exec " ; \
    

    Das sieht für mich so aus, als würden hier "unresolved symbols" erlaubt, und als müsste ich in diese Richtung arbeiten. Dasselbe in grün würde ich nun gern mit CMake erreichen, und natürlich möglichst ohne kompilerspezifische Optionen zu definieren...

    Weiß jemand Rat?
    Danke im voraus,
    Grüße Henning


Anmelden zum Antworten