Я профилирую несколько файлов в тесте Spec2K6 с профилировщиком, написанным в LLVM, и не могу понять, что является правильным способом связать несколько файлов .bc.Ссылка в llvm
Например, тест имеет concat.c, которая использует метод xmalloc, определенный в xmalloc.c, которая использует метод xexit от xexit.c
Я использую следующие команды, чтобы связать несколько файлов перед .bc Я их профиль -
CFLAGS='-D_GNU_SOURCE -D_XOPEN_SOURCE=600 -c -Wall -pedantic -Wno-long-long -g -O0 - I/net/x/silkyar/llvm/include -I/net/403.gcc/src'
clang $CFLAGS -emit-llvm -c 403.gcc/src/concat.c -o concat.bc
clang $CFLAGS -emit-llvm -c 403.gcc/src/xexit.c -o xexit.bc
clang $CFLAGS -emit-llvm -c 403.gcc/src/xmalloc.c -o xmalloc.bc
llvm-link concat.bc xexit.bc xmalloc.bc -o a.bc
llc a.bc -o a.s
g++ -o final a.s
./final
, но это не удается с, LLVM-ссылка: ошибка ссылки в 'xexit.bc': Соединение глобалам под названием 'xexit': символ умножения определен! /tmp/ccUldT0Y.o:(.debug_info+0x1e): не определено ссылка на .Lline_table_start0' /tmp/ccUldT0Y.o:(.debug_info+0x42f): undefined reference to
.Lline_table_start1' /tmp/ccUldT0Y.o:(.debug_info+0x4a0): не определено ссылка на `.Lline_table_start2' collect2: Л.Д. возвращается 1 статус выхода
Может ли кто-нибудь направить меня на то, как работает llvm-link.
Спасибо.
В старых версиях LLVM вы могли бы найти очень полезный инструмент 'llvm-ld', который имитировал поведение GNU ld. К сожалению, кто-то удалил его позже. –