Ошибка сборки NSS из-за кода сборки Windows 10 64-битной машины - PullRequest
0 голосов
/ 09 октября 2018

Я собираю 64-разрядную версию nss 3.39 в Windows 10 с Microsoft Visual Studio 2017. Сбой при ошибке:

error C4235: nonstandard extension used : '__asm' keyword not supported on this architecture

Кто-нибудь сталкивался с этой проблемой?Нужно решение для этого.

Шаги, за которыми я следовал:

  1. Установлен Visual Studio 2017 (пробная версия Enterprise), как указано в Предварительных требованиях Windows для сборки Firefox.
  2. УстановленРжавчина.
  3. Установленный MozillaBuild, загруженный из пакета MozillaBuild.
  4. Загрузил пакет NSS выпуска 3.39 (nss-3.39-with-nspr-4.20.tar.gz) из http://ftp.mozilla.org/pub/security/nss/releases/NSS_3_39_RTM/
  5. Создан каталог C: \ src Извлечено nss в c: / src (это выглядит как C: /src/nss-3.39)
  6. Запустите C: \ Program Files (x86) \ Microsoft Visual Studio \2017 \ Enterprise \ VC \ Auxiliary \ Build \ vcvars64.bat
  7. Выполнить C: \ mozilla-build \ start-shell.bat
  8. Установить MOZ_NO_RESET_PATH=1, чтобы это не переопределило переменную PATH.
  9. Созданы необходимые переменные env,

    export OS_TARGET=WIN95
    export BUILD_OPT=1
    export HOME="/c/src"
    
  10. cd ~ (чтобы перенести меня в мой домашний каталог).

  11. Теперь cd в nss-3.5 \ nss Build с использованием make nss_build_all

Теперь с этими параметрами: USE_64=1 BUILD_OPT=1 make nss_build_all Я получаю следующую ошибку:

gtest/include/gtest/internal/gtest-port.h(999): error C2220: warning treated as error - no 'object' file generated... [some build messages]...
make[2]: *** [WIN954.0_x86_64_64_OPT.OBJ/gtest/src/gtest-all.obj] Error 2
make[2]: Leaving directory /c/src/nss-3.39/nss/gtests/google_test'
make[1]: *** [libs] Error 2
make[1]: Leaving directory /c/src/nss-3.39/nss/gtests'
make: *** [libs] Error 2

1 Ответ

0 голосов
/ 10 октября 2018

Установка CYGWIN и отключение «gtests» работали для меня.Чтобы отключить GTests, установите NSS_DISABLE_GTESTS=1

Вот некоторые способы устранения неполадок:

  1. Если вы получаете следующие ошибки, связанные с отсутствием некоторых библиотеки включает затем удаление двух переменных из C: \ mozilla-build \ start-shell.bat (в основном, вы не должны инициализировать их пустыми значениями, чтобы он мог выбрать необходимые библиотеки из Windows)

    SET INCLUDE=
    SET LIB=
    

    Ошибка Пример: * 10101 * * 10101 *

    c:\src\nss-3.39\nss\cpputil\databuffer.h(10): fatal error C1083: Cannot open include file: 'algorithm': No such file or directory
    make[1]: *** [WINNT6.2_x86_64_64_OPT.OBJ/databuffer.obj] Error 2
    make[1]: Leaving directory `/c/src/nss-3.39/nss/cpputil'
    make: *** [libs] Error 2
    

    Повторно выполнить шаги, начиная с шага 8.

  2. Если сборка не удаласьиз-за кода сборки / ключевых слов сборки, затем установите компилятор сборки (я установил CYGWIN) и добавьте в свой путь или установите значение переменной CYGWIN в C: \ mozilla-build \ start-shell.bat.

    Ошибка Ex.:

    error C4235: nonstandard extension used : '__asm' keyword not supported on this architecture
    

    Это происходит потому, что встроенный asm в 64-битной разработке не поддерживается сценарием VS2017.

  3. NSS 3.39 использует gtest 1.7 и выдает предупреждения об устаревании TR1.Это может привести к сбою сборки.Если вы видите ошибку, подобную следующей, отключив «gtests», вы можете успешно скомпилировать NSS.Для этого перед запуском сборки установите NSS_DISABLE_GTESTS=1

    Ошибка Пример.:

    gtest/include/gtest/internal/gtest-port.h(999): error C2220: warning treated as error - no 'object' file generated
    gtest/include/gtest/internal/gtest-port.h(999): warning C4996: 'std::tr1': warning STL4002: The non-Standard std::tr1 namespace and TR1-only machinery are deprecated and will be REMOVED. You can define _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING to acknowledge that you have received this warning
    

    Хотя эта проблема была исправлена ​​в MozillaПостроить системный проект, это не отражено в НСС.Я думаю, NSS необходимо обновить, чтобы использовать gtest 1.8.

Ниже приведены шаги, которые я выполнил, чтобы успешно собрать NSSv3.39 (с NSPR) в Windows 10 (64-бит) с VS2017.

  1. Установлена ​​Visual Studio 2017 (пробная версия Enterprise), как указано в Предварительных требованиях Windows для сборки Firefox.
  2. Установлено Rust .
  3. Установлен MozillaBuild, загружен из Пакет MozillaBuild .
  4. Установлен CYGWIN .
  5. Загрузите пакет NSS выпуска 3.39 (nss-3.39-with-nspr-4.20.tar.gz) из
  6. Создан каталог C:\src
  7. Извлечено nss в c:/src (это похоже наC: /src/nss-3.39)
  8. Выполнить

    C:\Program Files (x86)\Microsoft Visual
    Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat
    
  9. Выполнить C:\mozilla-build\start-shell.bat

  10. Установить MOZ_NO_RESET_PATH=1, поэтому это не будет переопределять переменную PATH.
  11. Созданы необходимые переменные env,

    export OS_TARGET=WINNT
    export USE_64=1
    export BUILD_OPT=1
    export NSS_DISABLE_GTESTS=1
    export HOME="/c/src"
    
  12. cd ~ (для переноса в домашний каталог).

  13. Теперь перейдите в nss-3.5 \ nss
  14. Сборка с использованием make nss_build_all
...