У меня проблема с компиляцией надстройки узла с помощью opencv на os x и heroku. однако на ubuntu он работает нормально.
Я использую бродячий файл:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.provision :shell, :inline => $BOOTSTRAP_SCRIPT # see below
end
$BOOTSTRAP_SCRIPT = <<EOF
set -e # Stop on any error
# Make vagrant automatically go to /vagrant when we ssh in.
echo "cd /vagrant" | sudo tee -a ~vagrant/.profile
sudo apt-get update -y
sudo apt-get install -y build-essential python g++ make curl git
sudo apt-get install -y libopencv-dev libeigen3-dev
curl http://nodejs.org/dist/v0.10.35/node-v0.10.35-linux-x64.tar.gz | \
tar -C /usr/local/ --strip-components=1 -xvz; \
npm update -g npm
echo VAGRANT IS READY.
EOF
У меня есть binding.gyp
файл:
{
"targets": [{
"target_name": "module",
"sources": [
"node_src/module.cc",
"src/Candidate.cpp",
"src/Image.cpp",
"src/LearnerEngine.cpp",
"src/ShaheenTracker.cpp"
],
'libraries': [
'<!@(pkg-config --libs opencv)'
],
'include_dirs': [
'include/',
"<!(node -e \"require('nan')\")"
],
'cflags': [
'<!@(pkg-config --cflags "opencv <= 3.0.0" )', '-std=c++11', '-Wall', '-fPIC'
],
'cflags!': ['-fno-exceptions'],
'cflags_cc!': ['-fPIC', '-fno-rtti', '-fno-exceptions', '--enable-auto-import'],
"conditions": [
['OS=="mac"', {
'xcode_settings': {
'OTHER_CFLAGS': [
"-mmacosx-version-min=10.7",
"-std=c++11",
"-stdlib=libc++",
'<!@(pkg-config --cflags opencv)'
],
"GCC_ENABLE_CPP_RTTI": "YES",
"GCC_ENABLE_CPP_EXCEPTIONS": "YES"
}
}]
]
}]
}
В OS X я могу компилировать npm i
нормально. Однако я не могу запустить его, так как получаю следующую ошибку:
1): Symbol not found: __ZNK2cv11_InputArray12getMatVectorERNSt3__16vectorINS_3MatENS1_9allocatorIS3_EEEE
На Heroku я использую https://github.com/ddollar/heroku-buildpack-apt, чтобы получить пакеты и следующий файл Aptfile:
libeigen3-dev
libopencv-dev
Однако я получаю следующую ошибку:
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_calib3d.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_contrib.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_core.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_features2d.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_flann.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_gpu.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_highgui.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_legacy.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_ml.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_objdetect.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_ocl.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_photo.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_stitching.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_superres.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_ts.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_video.so: No such file or directory
remote: g++: error: /usr/lib/x86_64-linux-gnu/libopencv_videostab.so: No such file or directory
Я думаю, что это pkg-config
проблема.
Что я делаю неправильно?
sudo apt-get install -y libopencv-dev
устанавливает opencv или что-то еще? Потому что на любой странице из Google я вижу, что OpenCV установлен из репозитория git или из какого-то архива (.tar, .zip ...) - person sop   schedule 15.01.2015