Esta é uma versão modificada do uClibc para KLEE. Consulte o README para obter informações sobre o uClibc.
Para construir uClibc para KLEE:
Certifique-se de que llvm-config
esteja em seu PATH (ou defina usando --with-llvm-config
). A versão do LLVM usada pelo llvm-config
deve corresponder à versão do LLVM usada pelo compilador C LLVM Bitcode que você pretende usar na etapa 2.
Certifique-se de ter um dos seguintes compiladores C LLVM
clang
construído no diretório da ferramenta LLVM ( llvm-config --bindir
)clang
em seu PATH
O compilador C a ser usado será procurado na ordem acima com o primeiro compilador funcional a ser usado.
Observe que você também pode forçar um compilador C específico usando a variável de ambiente CC ou usando --with-cc
com o script configure.
Execute o script de configuração.
$ ./configure --make-llvm-lib
Para ver todas as opções, execute
$ ./configure --help
Por padrão, um arquivo .config
pré-construído do uClibc será adicionado ao diretório raiz do uClibc pelo script de configuração. Isso é feito para facilitar a compilação para os usuários. No entanto, o sinalizador --disable-prebuilt-config pode ser usado para evitar que um arquivo .config
seja adicionado. Se desejar criar seu próprio .config
você pode fazê-lo executando make menuconfig
ou make config
após executar o script configure.
Compilar
$ make
Você também pode adicionar sinalizadores opcionais executando a adição KLEE_CFLAGS=...
ao final da linha make acima. Em particular, para compilar printf, que é excluído por padrão, use:
make KLEE_CFLAGS="-DKLEE_SYM_PRINTF"
Para compilar no modo otimizado, use o sinalizador --enable-release
. Aviso que as coisas podem quebrar se você fizer isso.