Я создаю чрезвычайно простой аддон node.js, который просто выводит строку «Hello». Когда я собираюсь собрать его с помощью «node-gyp build», я получаю сообщение об ошибке:
gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | darwin | x64
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
CXX(target) Release/obj.target/hello/hello.o
SOLINK_MODULE(target) Release/hello.node
clang: error: no such file or directory: '“-L/opt/local/lib”'
make: *** [Release/hello.node] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack at ChildProcess.emit (events.js:98:17)
gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:820:12)
gyp ERR! System Darwin 13.4.0
gyp ERR! command "node" "/usr/local/bin/node-gyp" "build"
gyp ERR! cwd /Users/Kevin/Development/node/sampleaddon
gyp ERR! node -v v0.10.35
gyp ERR! node-gyp -v v1.0.2
gyp ERR! not ok
Сначала я иду и проверяю, существует ли /opt/local/lib. Он есть, и он полон файлов. Я думаю, что это, возможно, проблема с разрешениями, поэтому я запускаю «sudo node-gyp build». Это прекрасно работает, и аддон собирается без ошибок.
Так что похоже, что это связано с разрешениями. Итак, я смотрю на разрешения:
Chipmunk:sampleaddon Kevin$ ls -l /opt/local
total 8
drwxr-xr-x 3 root wheel 102 Feb 2 2014 Library
drwxr-xr-x 344 root admin 11696 Mar 13 2014 bin
drwxr-xr-x 7 root admin 238 Feb 2 2014 etc
drwxr-xr-x 70 root admin 2380 Mar 13 2014 include
drwxr-xr-x 240 root admin 8160 Mar 13 2014 lib
drwxr-xr-x 7 root admin 238 Feb 2 2014 libexec
lrwxr-xr-x 1 root admin 9 Feb 2 2014 man -> share/man
drwxr-xr-x 9 root admin 306 Feb 2 2014 sbin
drwxr-xr-x 26 root admin 884 Feb 2 2014 share
drwxr-xr-x 3 root admin 102 Oct 25 2013 var
У всех есть доступ для чтения к /opt/local/lib, поэтому я не понимаю, в чем здесь проблема. Я хотел бы создавать надстройки узлов, не создавая их с правами root.
Я npm установил node-gyp с параметром -g, но это обычный способ его установки.
Кто-нибудь знает, в чем проблема?
Редактировать: Вот файл binding.gyp.
{
"targets" : [
{
"target_name" : "hello",
"sources" : [ "hello.cpp" ]
}
]
}
Вот как это выглядит, когда я запускаю «sudo node-gyp build»:
Chipmunk:sampleaddon Kevin$ sudo node-gyp build
gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | darwin | x64
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
CXX(target) Release/obj.target/hello/hello.o
SOLINK_MODULE(target) Release/hello.node
SOLINK_MODULE(target) Release/hello.node: Finished
gyp info ok
Я не знаю, имеет ли это значение, но я использую OS X 10.9.5.
binding.gyp
? - person mscdex   schedule 07.02.2015