使用GCC在Linux中编译带有库的命令行

时间:2015-01-19 17:01:19

标签: c++ gcc compiler-errors jsoncpp

我是计算机视觉领域的Android开发人员和工程师。

我在Mac上使用OpenCV制作计算机视觉项目,在Xcode中使用OS X 10.9.5并且它是跨平台的,所以我正在做的是命令行编译成linux并访问它(服务器)。

我遇到的问题是图书馆JSONCPP未被识别。我用以下代码编译它:

  

g ++ -I / home / ec2-user / project / opencv / include / 249include / include /   -L / home / ec2-user / project / opencv / build / lib / -L / home / ec2-user / project / lib / -I / home / ec2-user / project / jsoncpp-master / include / -g - o binary main.cpp facerecognition.cpp utils.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_stitching -lopencv_flann -w -std = c ++ 11

输出的哪一部分是:

  

/home/ec2-user/project/utils.cpp:2475:undefined   引用`Json :: Value :: Value(Json :: ValueType)'

     

/home/ec2-user/project/utils.cpp:2478:未定义   引用`Json :: Value :: Value(Json :: ValueType)'

     

/home/ec2-user/project/utils.cpp:2479:undefined   引用`Json :: Value :: Value(Json :: ValueType)'

     

/home/ec2-user/project/utils.cpp:2484:undefined   引用`Json :: Value :: Value(int)'

     

/home/ec2-user/project/utils.cpp:2484:undefined   引用`Json :: Value :: append(Json :: Value const&)'

     

/home/ec2-user/project/utils.cpp:2484:undefined   引用`Json :: Value :: ~Value()'

     

/home/ec2-user/project/utils.cpp:2486:undefined   引用`Json :: Value :: Value(std :: string const&)'

     

/home/ec2-user/project/utils.cpp:2486:undefined   引用`Json :: Value :: operator [](char const *)'

     

/home/ec2-user/project/utils.cpp:2486:undefined   引用`Json :: Value :: operator =(Json :: Value)'

     

/home/ec2-user/project/utils.cpp:2486:undefined   引用`Json :: Value :: ~Value()'

     

/home/ec2-user/project/utils.cpp:2487:undefined   引用`Json :: Value :: Value(Json :: Value const&)'

     

/home/ec2-user/project/utils.cpp:2487:undefined   引用`Json :: Value :: operator [](char const *)'

     

/home/ec2-user/project/utils.cpp:2487:undefined   引用`Json :: Value :: operator =(Json :: Value)'

     

/home/ec2-user/project/utils.cpp:2487:undefined   引用`Json :: Value :: ~Value()'

     

/home/ec2-user/project/utils.cpp:2488:undefined   引用`Json :: Value :: append(Json :: Value const&)'

     

/home/ec2-user/project/utils.cpp:2479:undefined   引用`Json :: Value :: ~Value()'

     

/home/ec2-user/project/utils.cpp:2489:undefined   引用`Json :: Value :: ~Value()'

     

/home/ec2-user/project/utils.cpp:2491:undefined   引用`Json :: StyledWriter :: StyledWriter()'

     

/home/ec2-user/project/utils.cpp:2492:undefined   引用`Json :: StyledWriter :: write(Json :: Value const&)'

     

/home/ec2-user/project/utils.cpp:2475:undefined   引用`Json :: Value :: ~Value()'

     

/home/ec2-user/project/utils.cpp:2484:undefined   引用`Json :: Value :: ~Value()'

     

/home/ec2-user/project/utils.cpp:2486:undefined   引用`Json :: Value :: ~Value()'

     

/home/ec2-user/project/utils.cpp:2487:undefined   引用`Json :: Value :: ~Value()'

     

/home/ec2-user/project/utils.cpp:2479:undefined   引用`Json :: Value :: ~Value()'

我必须提到我之前使用这个Makefile编译了这个Android(NDK):

  

LOCAL_PATH:= $(致电my-dir)

     

包括$(CLEAR_VARS)

     

OPENCV_CAMERA_MODULES:=关

     

OPENCV_INSTALL_MODULES:=上

     

包括$(LOCAL_PATH)/jsoncpp/Android.mk

     

包括   /Users/rafaelruizmunoz/Desktop/AndroidDevelopment/OpenCV-2.4.9-android-sdk/sdk/native/jni/OpenCV.mk

     

OPENCV_LIB_TYPE:= SHARED

     

LOCAL_C_INCLUDES + = $(LOCAL_PATH)

     

LOCAL_C_INCLUDES + = / Users / rafaelruizmunoz / OpenCVtry /

     

LOCAL_C_INCLUDES + =   /用户/ rafaelruizmunoz /桌面/ RD / OpenCVtry /库/ jsoncpp主/包括

     

LOCAL_PATH:= jni

     

LOCAL_ALLOW_UNDEFINED_SYMBOLS:= true

     

LOCAL_MODULE:= libXYZ

     

LOCAL_MODULE_NAME:= mylibXYZ

     

LOCAL_SRC_FILES:= facerecognition.cpp androidClass.cpp main.cpp   utils.cpp helper.cpp lbp.cpp

     

LOCAL_LDLIBS + = -llog -ldl

     

LOCAL_CPPFLAGS:= - std = c ++ 11

     

LOCAL_CFLAGS:= - w

     

CFLAGS = -w -g -Wall -Wextra -std = c ++ 11 -Wno-write-strings   ../../包括/升压

     

LOCAL_SHARED_LIBRARIES:= libJsoncpp libopencv_java

     

包括$(BUILD_SHARED_LIBRARY)

完美无缺。

在我的Mac上它完美编译。我必须做的是使用Xcode生成器的JSONCPP Makefile并添加为项目:

enter image description here

但是我已经找不到将其编译成Linux的线索。

你知道该怎么办吗? 提前谢谢。

问候。

1 个答案:

答案 0 :(得分:0)

这是基于你的Android makefile的猜测,因为我看不到包含的“BUILD_SHARED_LIBRARIES”,但我注意到你有:

“LOCAL_SHARED_LIBRARIES:= libJsoncpp libopencv_java”

我想你的g ++命令行上需要“-lJsoncpp -lopencv_java”。

您必须确保两个库都已构建,并且可以在其中一个“-L”路径中找到