Build NSS 3.35 to get Certutil in Windows 10. Error, C Compiler cannot create executables
Hello.
I would like to Install a certificate programmatically on Firefox version 59. I read that i need CertUtil, but the certutil code that i got on github is built from old NSS. so it only generates cert8.db and not Cert9.db, which Firefox 59 needs i assume.
So if i am correct, i need to build NSS 3.35 or higher to have a Certutil right? i went to this site to set the Windows Prerequisite and downloaded the mozilla build. and was able to build it. but it was very long so i cancelled it. I have also installed Visual Studio 2017 community Edition with the C++ compilers.
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Windows_Prerequisites https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Building
So i have a working mozilla-build folder and working bash prompt . And i have cloned the nspr and nss into my local folder.
So when i execute the command to build the nss, i get this error. that C compiler not working. And when i check the console.log, this is what i got.
configure:2383: checking build system type configure:2397: result: i686-pc-mingw32 configure:2417: checking host system type configure:2430: result: i686-pc-mingw32 configure:2450: checking target system type configure:2463: result: i686-pc-mingw32 configure:2543: checking for cl configure:2570: result: cl configure:3054: checking for whoami configure:3072: found /c/WINDOWS/System32/whoami configure:3085: result: /c/WINDOWS/System32/whoami configure:3481: checking for C compiler version configure:3490: cl --version >&5 ../configure: line 3492: cl: command not found configure:3501: $? = 127 configure:3490: cl -v >&5 ../configure: line 3492: cl: command not found configure:3501: $? = 127 configure:3490: cl -V >&5 ../configure: line 3492: cl: command not found configure:3501: $? = 127 configure:3490: cl -qversion >&5 ../configure: line 3492: cl: command not found configure:3501: $? = 127 configure:3521: checking whether the C compiler works configure:3543: cl conftest.c >&5 ../configure: line 3545: cl: command not found configure:3547: $? = 127 configure:3585: result: no configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "" | #define PACKAGE_TARNAME "" | #define PACKAGE_VERSION "" | #define PACKAGE_STRING "" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define DEBUG 1 | /* end confdefs.h. */ | | int | main () | { | | ; | return 0; | } configure:3590: error: in `/c/mynssbuild/nspr/WIN954.0_DBG.OBJ': configure:3592: error: C compiler cannot create executables See `config.log' for more details
I do not understand why its not able to run the cl compiler. Cause when i ran the developer command prompt for VS 2017, i can execute cl.
I don't know what is causing this error. Is it because bash cannot identify the c Compiler cl? do i have to set additional environment variables?
I hope someone can help me to solve this problem. Or if someone has a precompiled NSS 3.35 with Certutil.exe, that would greatly help.
Thank you very much, Rommel
Tutte le risposte (2)
Hi, I think you need to go back to github for info or to stackoverflow.com for help. Firefox Volunteer Support does not do compiling for what you are asking. You may want to try working with the Developer Edition as it has more things to work with and can be run in compatible mode at end of install with 57+ https://www.mozilla.org/en-US/developer/ (note it shares your bookmarks so back them up) Also the link to MDN link may be useful.
NSS supports SQLite databases since NSS 3.12, but certutil defaults to DBM and you may have to use the sql: prefix.
- https://blogs.oracle.com/meena/whats-new-in-nss-312-new-shared-dbs
- https://wiki.mozilla.org/NSS_Shared_DB
- Bug 1377940 - Change NSS default storage file format (currently DBM), when no prefix is given, to SQL [NSS 3.35]
- Bug 447868 - Allow environment variable to override directory name passed to NSS_Init* [NSS 3.12.1]
(please do not comment in bug reports
https://bugzilla.mozilla.org/page.cgi?id=etiquette.html)