Ошибка сборки NSS из-за кода сборки Windows 10 64-битной машины

Я создаю 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 используя 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 ответ

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

Вот некоторые неполадки:

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

    SET INCLUDE=
    SET LIB=
    

    Ошибка Ex.:

    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
    

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

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

    Ошибка Ex.:

    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. Я думаю, что NSS необходимо обновить, чтобы использовать gtest 1.8.

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

  1. Установленная Visual Studio 2017 (пробная версия Enterprise), как указано в Предварительных требованиях Windows для сборки Firefox.
  2. Установлена ржавчина.
  3. Установлен MozillaBuild, загружен из пакета MozillaBuild.
  4. Установлен CYGWIN.
  5. Загрузите пакет NSS выпуска 3.39 (nss-3.39-with-nspr-4.20.tar.gz) из
  6. Создан каталог C:\src
  7. Извлечено НСС в 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
Другие вопросы по тегам