LINUX.ORG.RU

BSD для новичка

 


2

1

Посмотрел я значит вот етот тред OpenBSD меняет лицензию GCC и понял что надо бы ехать на бсд, с этими не по пути. С чего лучше начать? Голая фря или какие сборки? Проекты на её основе (PC-BSD)?



Последнее исправление: Aceler (всего исправлений: 1)
Ответ на: комментарий от iron

У вашего компилятора два раза параметр "-flto=thin" в строке компиляции указан, не заметили? Почему так?

iZEN ★★★★★
()
Ответ на: комментарий от iron

Насчёт LLD

или lld который поддерживает LTO.

https://wiki.freebsd.org/LLD

FreeBSD-CURRENT contains LLD 4.0.0. To build world and kernel with LLD, and install LLD as /usr/bin/ld, add to /etc/src.conf:

WITH_LLD_IS_LD=yes

Make lld the default linker

cd build/bin
ln -s lld ld
setenv PATH /path/to/llvm/build/bin:$PATH
setenv LD /path/to/llvm/build/bin
rehash

amd64 Fully functional for base system kernel + world. Work on the ports tree in progress.

~ то есть x86_64 систему собрать-то можно, а вот сборку портированных программ с LLD никто гарантировать не может.

i386 Kernel and userland link completes. Kernel modules fail. Output not yet tested.

~ для x86_32 вообще всё плохо.

iZEN ★★★★★
()
Ответ на: Насчёт LLD от iZEN

~ то есть x86_64 систему собрать-то можно

Это теоритически. А практически, сборка системы используя lld вываливается с:

/usr/obj/usr/src/tmp/usr/bin/ld: error: duplicate symbol 'rk_strsvis' in version script
/usr/obj/usr/src/tmp/usr/bin/ld: error: duplicate symbol 'rk_strunvis' in version script
/usr/obj/usr/src/tmp/usr/bin/ld: error: duplicate symbol 'rk_svis' in version script
cc: error: linker command failed with exit code 1 (use -v to see invocation)
*** [libroken.so.11.full] Error code 1

# /usr/obj/usr/src/tmp/usr/bin/ld -v
LLD 4.0.0 (FreeBSD 297347) (compatible with GNU linkers)
iron ★★★★★
()

MacOS худшая из бздей в плане установки.

vblats
()

Голая фря. Сборки не нужны.

Unicode4all ★★★★★
()
Ответ на: комментарий от iZEN

Ну всё, в системе

% cc --version
FreeBSD clang version 4.0.0 (tags/RELEASE_400/final 297347) (based on LLVM 4.0.0)
Target: x86_64-unknown-freebsd11.0
Thread model: posix
InstalledDir: /usr/bin

Пытаюсь пересобрать системным компилятором Clang 4.0 порт graphics/dri с опцией MESA_LLVM_VER=40 в /etc/make.conf. В конце процесса сборки вываливается несколько подобных ошибок:

In file included from draw/draw_llvm.c:45:
./gallivm/lp_bld_intr.h:69:20: error: unknown type name 'LLVMAttribute'; did you
      mean 'LLVMAttributeRef'?
                   LLVMAttribute attr);
                   ^~~~~~~~~~~~~
                   LLVMAttributeRef
/usr/local/llvm40/include/llvm-c/Types.h:116:40: note: 'LLVMAttributeRef'
      declared here
typedef struct LLVMOpaqueAttributeRef *LLVMAttributeRef;
                                       ^
draw/draw_llvm.c:1577:10: error: implicit declaration of function
      'LLVMAddAttribute' is invalid in C99
      [-Werror,-Wimplicit-function-declaration]
         LLVMAddAttribute(LLVMGetParam(variant_func, i),
         ^
draw/draw_llvm.c:1578:27: error: use of undeclared identifier
      'LLVMNoAliasAttribute'; did you mean 'LLVMAddAttribute'?
                          LLVMNoAliasAttribute);
                          ^~~~~~~~~~~~~~~~~~~~
                          LLVMAddAttribute
draw/draw_llvm.c:1577:10: note: 'LLVMAddAttribute' declared here
         LLVMAddAttribute(LLVMGetParam(variant_func, i),
         ^
Все порты обновлены до последнего среза. Нет - пока не получается отвязаться от LLVM 3.9.1.

Странно другое. Зачем ему файл /usr/local/llvm40/include/llvm-c/Types.h, если я собирал системным компилятором? Как это сковырнуть?

iZEN ★★★★★
()
Последнее исправление: iZEN (всего исправлений: 1)
Ответ на: комментарий от iZEN

Зачем ему файл /usr/local/llvm40/include/llvm-c/Types.h, если я собирал системным компилятором?

Наверно потому, что в INCLUDE_PATH путь /usr/local/include приоритетнее /usr/include

Как это сковырнуть?

Либо удалить порт llvm40-4.0.0_2, либо переименовать его хедерные файлы в /usr/local/include

iron ★★★★★
()
Ответ на: комментарий от splinter

Всем. Начиная от ядра и файловой системы, заканчивая пользовательским окружением.

iZEN ★★★★★
()
Ответ на: Насчёт LLD от iZEN

Для i386 можешь даже не пробовать.

CYB3R ★★★★★
()
Ответ на: комментарий от iron

Если не в курсе разницы между

XXXFLAGS +=
и
XXXFLAGS = 
то нефиг вообще их менять.
-O3 традиционно экспериментально-агрессивные оптимизации, а уж funroll-loop в ядре вообще не сдался, потому как там все «вылизано» ручками и излишняя оптимизация может привести как раз к обратному эффекту, а то и багам.

anonymous
()
Ответ на: комментарий от anonymous

излишняя оптимизация может привести как раз к обратному эффекту, а то и багам

За 4 года юзания этих флагов с clang - проблем не было. А вот с gcc на генте были.

iron ★★★★★
()
Последнее исправление: iron (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.