Как собрать openssl с помощью clang (а не gcc) на машине FreeBSD?

Это возможно с sed , но довольно сложно, чем любые парсеры XML.

sed '
:2
#puts open and close tag in one pattern
/\s*<\([^>]*>\).*<\/\1\s*$/!{
    N
    b2
}
#mark pairable tags by `#` symbol
:1
s/\(.*<\)\(\([^#> ]*\).*<\)\/\3/\1#\2#\/\3/
#other variant
#s/\(.*<\)\(\([^><]*\)[^>]*>.*<\/\3\)>/\1#\2#>/
t1
#change non-marked text
s/<\([^#]*\)>/\&lt;\1\&gt;/g
#remove marks
s/#//g
' file.html
1
13.08.2015, 13:43
1 ответ

Похоже, у вас возник ряд проблем, которые кратко описаны ниже.Вы почти наверняка должны использовать порт для python, как указано @mjturner, который будет использовать собственный FreeBSD OpenSSL.

  • в csh синтаксис set CC clang устанавливает две переменные с именами CC и clang в пустую строку, вы хотите установите CC = clang , но даже это не сработает (см. следующий пункт)
  • , просто установка переменной в вашей csh оболочке не повлияет ни на что другое, вы действительно хотите использовать setenv CC clang (обратите внимание, что здесь не используется = ). config - это сценарий sh , поэтому переменная должна быть экспортирована, чтобы ее можно было увидеть.
  • libc является не зависимостью от gcc , почти все, что вы связываете динамически, будет связано с libc (во FreeBSD это не GNU glibc). Альтернативой является связывание статически , что, если возможно, удаляет динамическую зависимость, встраивая требуемый код в окончательный двоичный файл. (При использовании gcc может быть зависимость libgcc на некоторых платформах и используется для обработки исключений. Этого труднее избежать.) Я ожидал, что у вас возникнут проблемы с статической компоновкой Python.

Если вместо этого вы создаете OpenSSL и python с использованием clang для некоторых целей, например для распространения двоичных файлов (при условии, что вы внимательно прочитали соответствующие лицензионные соглашения), или если у вас есть требования для определенных версий программного обеспечения, это должно быть возможно путем правильной установки CC .Однако я отмечаю, что порт OpenSSL этого не делает, он выбирает исправление команд gcc из сценария Configure и использует FREEBSDCC вместо этого.

Другой совет:

  • см. Вики OpenSSL для использования clang: https://wiki.openssl.org/index.php/Compilation_and_Installation#Modifying_Build_Settings clang фактически охвачены, но не FreeBSD специально, потому что все BSD здесь считаются эквивалентными.
  • обязательно выполните make test после сборки OpenSSL
  • убедитесь, что все скомпилировано одним и тем же компилятором, это означает python и все в lib-dynload
2
29.04.2021, 00:25

Теги

Похожие вопросы