Ошибка сборки 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
Кто-нибудь сталкивался с этой проблемой? Нужно решение по этому вопросу.
Шаги, за которыми я следовал:
- Установленная Visual Studio 2017 (пробная версия Enterprise), как указано в Предварительных требованиях Windows для сборки Firefox.
- Установлена ржавчина.
- Установлен MozillaBuild, загружен из пакета MozillaBuild.
- Загрузил пакет NSS выпуска 3.39 (nss-3.39-with-nspr-4.20.tar.gz) с http://ftp.mozilla.org/pub/security/nss/releases/NSS_3_39_RTM/
- Создан каталог C: \ src Извлечено nss в c:/src (это выглядит как C:/src/nss-3.39)
- Запустите C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat
- Запустите C:\mozilla-build\start-shell.bat
- Задавать
MOZ_NO_RESET_PATH=1
так что это не переопределит переменную PATH. Создал необходимые переменные env,
export OS_TARGET=WIN95 export BUILD_OPT=1 export HOME="/c/src"
cd ~
(Чтобы привести меня в мой домашний каталог).- Сейчас
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
Вот некоторые неполадки:
Если вы получаете следующие ошибки, которые связаны с отсутствием некоторых библиотек и включают в себя, удалите две переменные из 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 и далее.
Если ваша сборка не удалась из-за кода сборки / ключевых слов сборки, то установите компилятор сборки (я установил CYGWIN) и добавьте в свой путь или установите значение переменной CYGWIN в C:\mozilla-build\start-shell.bat.
Ошибка Ex.:
error C4235: nonstandard extension used : '__asm' keyword not supported on this architecture
Это происходит из-за того, что VS2017 не поддерживает встроенный asm в 64-битной разработке.
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.
- Установленная Visual Studio 2017 (пробная версия Enterprise), как указано в Предварительных требованиях Windows для сборки Firefox.
- Установлена ржавчина.
- Установлен MozillaBuild, загружен из пакета MozillaBuild.
- Установлен CYGWIN.
- Загрузите пакет NSS выпуска 3.39 (nss-3.39-with-nspr-4.20.tar.gz) из
- Создан каталог
C:\src
- Извлечено НСС в
c:/src
(это выглядит как C:/src/nss-3.39) Запустить
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat
Бежать
C:\mozilla-build\start-shell.bat
- Задавать
MOZ_NO_RESET_PATH=1
так что это не переопределит переменную PATH. Создал необходимые переменные env,
export OS_TARGET=WINNT export USE_64=1 export BUILD_OPT=1 export NSS_DISABLE_GTESTS=1 export HOME="/c/src"
cd ~
(Занести в домашний каталог).- Теперь перейдите в nss-3.5\nss
- Сборка с использованием
make nss_build_all