Как собрать coreutils с LLVM 3.4

Я пытаюсь собрать GNU Coreutils 8.23, используя цепочку инструментов LLVM 3.4. Один очень важный аспект заключается в том, что мне также нужен байт-код LLVM для всех coreutils. Поэтому мне нужно включить -emit-llvm в CFLAGS. Поэтому я удалил $(CFLAGS) из переменной LINK Makefile coreutils. После этого я запускаю следующую команду:

make CC=/home/user/llvm-3.4.2/build/Release+Asserts/bin/clang 
CCLD=/home/user/llvm-3.4.2/build/Release+Asserts/bin/llvm-link 
IGNORE_UNUSED_LIBRARIES_CFLAGS= CFLAGS="-emit-llvm -S" 
VERBOSE=1 AM_CFLAGS= AM_LDFLAGS= 
AR=/home/user/llvm-3.4.2/build/Release+Asserts/bin/llvm-ar 
RANLIB=/home/user/llvm-3.4.2/build/Release+Asserts/bin/llvm-ranlib

и я получаю следующую ошибку:

/home/user/llvm-3.4.2/build/Release+Asserts/bin/llvm-link: src/libver.a:1:2:    error: expected integer
!<arch>
 ^
/home/user/llvm-3.4.2/build/Release+Asserts/bin/llvm-link: error loading file 'src/libver.a'

Любые идеи о том, как заставить это работать?


person Jeff Wilson    schedule 11.11.2014    source источник
comment
Вы когда-нибудь пробовали wllvm его скомпилировать?   -  person Hongxu Chen    schedule 20.12.2014


Ответы (2)


Попробуй это.

export CC="/home/user/llvm-3.4.2/build/Release+Asserts/bin/clang"
export CXX="/home/user/llvm-3.4.2/build/Release+Asserts/bin/clang++" 

Убедитесь, что именно здесь находится набор инструментов вашего компилятора.

Затем в каталоге coreutils запустите ./configure (перед этим запустите ./bootstrap, если вы его еще не запускали). Запуск ./configure проверяет, правильно ли компилируется ваш clang, и создает Makefile с правильной конфигурацией.

Затем выполните make и make install в соответствии с инструкциями.

person Abhishek Vasisht    schedule 16.02.2015
comment
Я получил ошибку переопределения переменной max_align_t typedef. Я прокомментировал это в coreutils/lib/stddef.h. Я смог построить остальную часть кода с помощью этого подхода. - person Shehbaz Jaffer; 03.03.2017

Файл библиотеки '.a' здесь не читается llvm-link. Возможный неформальный взлом этого, вероятно, состоит в том, чтобы найти Makefile, генерирующий эту библиотеку, и позволить

AR = llvm-link, ar option = -o(i.e. change ar rv to llvm-link -o), 

и отключите команду ranlib при компиляции (вам не нужна ranlib при использовании llvm-link).

Затем сгенерированный файл «.a» представляет собой сшитый файл bc, и этот файл «.a» должен быть доступен командой llvm-link, которую вы вызываете.

person Min Gao    schedule 12.02.2016