Articles of linker

Errore del linker C ++ con constexpr statico di class

Sto compilando il seguente semplice programma con g++-4.6.1 –std=c++0x : #include struct S { static constexpr int X = 10; }; int main() { return std::min(S::X, 0); }; Ottengo il seguente errore del linker: /tmp/ccBj7UBt.o: In function `main’: scratch.cpp:(.text+0x17): undefined reference to `S::X’ collect2: ld returned 1 exit status Mi rendo conto che i membri […]

c problemi di linker matematici su Ubuntu 11.10

Qualche errore strano è apparso dopo aver aggiornato la mia Ubuntu da (10.11, 11.04 i dont know) a 11.10. Ricevo un undefined reference to ‘sqrt’ mentre utilizzo math.h e il collegamento con -lm Sto compilando gcc -Wall -Werror -g -Iinclude/ -lm lib/matrix.c src/analyse.c -o bin/analyse.o entrambi i file sorgente usano e includono math.h. Questo codice […]

differenza tra caricamento dinamico e collegamento dinamico?

La routine non viene caricata fino a quando non viene chiamata. Tutte le routine sono mantenute su disco in un formato di caricamento rintracciabile. Il programma principale viene caricato in memoria e viene eseguito. Questo è chiamato collegamento dinamico. Perché questo è chiamato Dynamic Linking? Non dovrebbe essere Caricamento dinamico perché la Routine non viene […]

Come si collega a una versione specifica di una libreria condivisa in GCC

Sto compilando del codice che usa libcurl su un sistema Debian Linux. La mia macchina dev esegue Debian 5 ma voglio che il binario sia utilizzabile anche sui vecchi sistemi Debian 4. Trovo che se si specifica -lcurl si collegherà a libcurl.so.4 ma i sistemi Debian 4 hanno solo libcurl.so.3 C’è un modo in cui […]

Errore di collegamento C ++ dopo l’aggiornamento a Mac OS X 10.9 / Xcode 5.0.1

Dopo l’aggiornamento a Mac OS X 10.9 / Xcode 5.0.1, le righe di comando per creare una libreria condivisa (.dylib) non sono riuscite con diversi simboli non definiti. clang++ -dynamiclib -install_name test.dylib *.o -o test.dylib Undefined symbols for architecture x86_64: “std::allocator::allocator()”, referenced from: _main in test.o “std::allocator::~allocator()”, referenced from: _main in test.o “std::ostream::operator<<(std::ostream& (*)(std::ostream&))", referenced […]

Libreria condivisa C ++ con modelli: errore di simboli non definiti

Sto cercando di collegarmi a una libreria condivisa con una class template, ma mi sta dando errori “simboli non definiti”. Ho condensato il problema a circa 20 righe di codice. shared.h template class myclass { Type x; public: myclass() { x=0; } void setx(Type y); Type getx(); }; shared.cpp #include “shared.h” template void myclass::setx(Type y) […]

CMake cross-compile con linker specifico non passa argomenti a armlink

Sto cercando di compilare un progetto cross-built per build ARM Cortex, ma non riesco a far funzionare il linker. Voglio usare armlink, ma nessun file viene passato a armlink e quindi non viene prodotto nessun file. Il mio CMakeLists.txt è piuttosto semplice e viene fornito di seguito. L’errore viene mostrato dopo quello che mostra che […]

Aumenta il collegamento statico

Sto usando la libreria Boost in Linux, GCC. Dopo aver installato e creato Boost, ho scoperto che i programmi che usano Regex e Thread usano librerie Boost condivise. Per i miei scopi, ho bisogno di collegamenti statici. Come posso cambiare il tipo di collegamento? Dovrei ribuild il Boost, o forse posso impostare il tipo di […]

Qual è l’equivalente di Microsoft Visual Studio all’opzione GCC ld –whole-archive

Quando si collega una libreria statica a un eseguibile, i simboli non referenziati vengono normalmente scartati. Nel mio caso, alcuni oggetti altrimenti non utilizzati vengono utilizzati per registrare le rispettive classi in una fabbrica e se gli oggetti vengono scartati, questa registrazione fallisce. Sotto Unix, dove usiamo gcc, posso passare il flag –whole-archive al linker […]

Collegamento di libssl e libcrypto in GCC

Sto tentando di utilizzare l’interfaccia EVP di OpenSSL per fare un po ‘di crittografia. Sono abbastanza sicuro che il mio codice sia corretto, ma non riesco a farlo compilare. Sto usando GCC, e Ubuntu a 32 bit preciso con libssl-dev installato e all’ultima versione. Il progetto attualmente consiste di un file, program.c . #include … […]