Articles of ld

Incluir arquivo binário com script GNU ld linker

Eu tenho um script de link de trabalho. Eu quero adicionar outra seção de dados cujo conteúdo é puxado diretamente de um arquivo (ld não deve analisá-lo e extrair as seções e assim por diante). Como eu posso fazer isso? OUTPUT_FORMAT(“elf32-i386”) ENTRY(start) SECTIONS { .text 0x100000 : { *(.multiboot) *(.text) *(.code) *(.rodata*) } .data : […]

Erro de vinculador ao vincular o tutorial de registro de impulsos (referências indefinidas)

Eu instalei o boost no Fedora 20 via yum e estou tentando alguns exemplos simples. No entanto, tenho dificuldade para compilar o primeiro exemplo do tutorial de registro . Compilando com g++ -c boosttest.cc funciona bem, mas eu recebo muitos erros quando tento vinculá-lo com g++ boosttest.o -o boosttest -lboost_log -lpthread o log de erros […]

CMake: Como definir o LDFLAGS no CMakeLists.txt?

Eu defino as CFLAGS no CMake por CMAKE_C_FLAGS. É algo como isto para definir LDFLAGS?

Vinculando a versão de símbolo mais antiga em um arquivo .so

Usando gcc e ld em x86_64 linux eu preciso linkar contra uma versão mais nova de uma biblioteca (glibc 2.14), mas o executável precisa ser executado em um sistema com uma versão mais antiga (2.5). Como o único símbolo incompatível é memcpy (precisando de memcpy@GLIBC_2.2.5, mas a biblioteca fornece memcpy@GLIBC_2.14), gostaria de dizer ao linker […]

Qual é a diferença entre -rpath e -L?

gcc e o ld fornecem muitas maneiras de especificar um caminho de pesquisa para bibliotecas – entre elas, os -rpath e -L . As páginas de manual não revelam diferenças entre esses dois flags, efetivamente dizendo que cada flag adiciona uma biblioteca ao caminho de busca da biblioteca. Ainda assim, parece estranho que ambas as […]

ld: biblioteca não encontrada para -lcrt0.o no OSX 10.6 com gcc / clang -static flag

Quando tento construir o seguinte programa: #include int main(void) { printf(“hello world\n”); return 0; } No OS X 10.6.4, com os seguintes sinalizadores: gcc -static -o blah blah.c Isso retorna isso: ld: library not found for -lcrt0.o collect2: ld returned 1 exit status Alguém mais encontrou isto, ou é algo com que ninguém mais foi […]

Por que preciso definir LD_LIBRARY_PATH com uma exportação sempre que executo meu aplicativo?

Eu tenho algum código que usa algumas bibliotecas compartilhadas (código c no gcc). Ao compilar, tenho que definir explicitamente os diretórios include e library usando -I e -L, já que eles não estão nos locais padrão. Quando tento executar o código, recebo o seguinte erro: ./sync_test ./sync_test: error while loading shared libraries: libsync.so: cannot open […]

Por que estou recebendo um erro de “referência indefinida” do gcc tentando criar objects compartilhados?

Por que estou recebendo um erro de “referência indefinida” usando o gcc? Eu estou tentando criar um object compartilhado (.so) que exporte uma function, “external ()”. Eu então tentei ligar-me ao .so mas obter “referência indefinida ‘external’”. O que estou fazendo de errado aqui? Arquivo: external.c int external() { return 5; } Arquivo: program.c int […]

dlopen da memory?

Eu estou procurando uma maneira de carregar o código do object gerado diretamente da memory. Eu entendo que, se eu gravá-lo em um arquivo, posso chamar o dlopen para carregar dinamicamente seus símbolos e vinculá-los. No entanto, isso parece um pouco indireto, considerando que ele começa na memory, é gravado em disco e, em seguida, […]

Como forçar o gcc a vincular uma biblioteca estática não usada

Eu tenho um programa e uma biblioteca estática: // main.cpp int main() {} // mylib.cpp #include struct S { S() { std::cout << "Hello World\n";} }; S s; Eu quero ligar a biblioteca estática ( libmylib.a ) para o object de programa ( main.o ), embora o último não use nenhum símbolo do primeiro diretamente. […]