2014-08-01 3 views
0

내 프로젝트를 크로스 컴파일하여 나무 딸기 파이에서 사용할 수 있지만 dbus를 찾을 수 없습니다. 내가 고전적으로 편집 할 때 쉽게 발견 할 수있었습니다. cmake를 사용하고 있습니다. 대상 링크 라이브러리에 dbus-1을 추가했는데 arm-linux-gnueabihf를 사용하여 교차 컴파일했습니다.dbus/dbus.h 팔을 구축 할 때 해당 파일이나 디렉토리가 없습니다.

아이디어가 있으십니까?

편집 :

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/") 

FIND_PACKAGE(glib2) # bluetooth 
include_directories(${GLIB2_INCLUDE_DIRS}) # bluetooth 

include_directories(${CMAKE_SOURCE_DIR}/../bluez/gdbus) 
include_directories(${CMAKE_SOURCE_DIR}/../bluez/attrib) 
include_directories(${CMAKE_SOURCE_DIR}/../bluez/src) 
include_directories(${CMAKE_SOURCE_DIR}/../bluez/src/shared) 
include_directories(${CMAKE_SOURCE_DIR}/../bluez/btio) 
include_directories(${CMAKE_SOURCE_DIR}/../bluez/lib) 
include_directories(${CMAKE_SOURCE_DIR}/../bluez/client) 
include_directories(${CMAKE_SOURCE_DIR}/../bluez/emulator) 
include_directories(${CMAKE_SOURCE_DIR}/../bluez/monitor) 
include_directories(${CMAKE_SOURCE_DIR}/../bluez) 
include_directories(/usr/include/dbus) 
set(CMAKE_CXX_FLAGS "-fpermissive") 
# Search every source files 
aux_source_directory(. SRC_LIST) 

include_directories (/usr) 
aux_source_directory(${CMAKE_SOURCE_DIR}/../bluez/gdbus SRC_BLUEZ_GDBUS) 
aux_source_directory(${CMAKE_SOURCE_DIR}/../bluez/client SRC_BLUEZ_CLIENT) 
aux_source_directory(${CMAKE_SOURCE_DIR}/../bluez/btio SRC_BLUEZ_BTIO_LIST) 
aux_source_directory(${CMAKE_SOURCE_DIR}/../bluez/attrib SRC_BLUEZ_ATTRIB_LIST) 
aux_source_directory(${CMAKE_SOURCE_DIR}/../bluez/emulator SRC_BLUEZ_EMULATOR) 
aux_source_directory(${CMAKE_SOURCE_DIR}/../bluez/lib SRC_BLUEZ_LIB) 
aux_source_directory(${CMAKE_SOURCE_DIR}/../bluez/monitor SRC_BLUEZ_MONITOR) 
aux_source_directory(${CMAKE_SOURCE_DIR}/../bluez/src SRC_BLUEZ_SRC) 
aux_source_directory(${CMAKE_SOURCE_DIR}/../bluez/src/shared SRC_BLUEZ_SRC_SHARED) 


add_executable(${PROJECT_NAME} ${SRC_LIST}) 

# Library used in test 
add_library(${PROJECT_NAME}-lib 
           Thread.cpp 
           NetworkThread.cpp 
           UdpSocket.cpp) 
add_library(MyBluezLib-lib 
${SRC_BLUEZ_SRC} ${SRC_BLUEZ_LIB} 
    ${SRC_BLUEZ_GDBUS} ${SRC_BLUEZ_CLIENT} ${SRC_BLUEZ_BTIO_LIST} ${SRC_BLUEZ_ATTRIB_LIST} ${SRC_BLUEZ_EMULATOR} 
    ${SRC_BLUEZ_SRC_SHARED} ${SRC_BLUEZ_MONITOR}) 

# Link libraries 
TARGET_LINK_LIBRARIES (${PROJECT_NAME} 
         pthread 
         glog 
         bluetooth 
         ${GLIB2_LIBRARIES} #bluetooth 
         readline 
         expat 
         dbus-1 
         dl 
         MyBluezLib-lib 
         ) 

을 그리고 이것은 내 호출을 확인하고 자신의 answear입니다 : 내 CMakeLists.txt를 추가

Scanning dependencies of target MyBluezLib-lib 
[ 1%] Building C object src/CMakeFiles/MyBluezLib-lib.dir/home/grosalex/job/stageING3/bluez/src/rfkill.c.obj 
In file included from /home/grosalex/job/stageING3/bluez/src/rfkill.c:39:0: 
/home/grosalex/job/stageING3/bluez/src/adapter.h:29:23: erreur fatale: dbus/dbus.h: Aucun fichier ou dossier de ce type 
#include <dbus/dbus.h> 

       ^

컴파일 terminée.

+0

안녕하세요, 프로젝트 구조를 추가하여 게시물을 편집 할 수 있습니다 그리고 컴파일 커맨드 라인을 부탁합니다. – Martin

+0

더 구체적이고 명확한 질문을하십시오 : http://stackoverflow.com/help/how-to-ask – askmish

+0

RPi에 내장 된 Linux 배포판은 무엇입니까? [Buildroot] (http://buildroot.uclibc.org/)도 살펴볼 수 있습니다. 그것은 당신의 크로스 컴파일 작업을 쉽게 할 수 있습니다. – yegorich

답변

1

필자가 볼 수있는 한, dbus에 대한 잘못된 include 디렉토리가 있습니다. 내가 pkg-config --cflags dbus-glib-1를 발행하는 경우가 include_directories(/usr/include/dbus)이 내 호스트 리눅스에서 나는 다음과 같은 한 것은, 플래그를 포함

-pthread -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include 

시도를이 구성은 다음과 같습니다

include_directories(/usr/include/dbus-1.0) 
+1

에서 실행되고 있지만/usr/include에 dbus 폴더가 dbus-1.0에 대한 링크이므로이 파일이 작동하지 않는 이유를 이해할 수 없으므로 설명이 있습니까? 도움을 많이 주셔서 고맙습니다. – user1796260

+0

'include_directory (/ usr/include/dbus /)'를 사용해 보셨습니까, 즉 dbus 뒤에'/'를 추가하셨습니까? – yegorich

+0

예 그것은 작동하지 않지만 include_directories (/usr/include/dbus-1.0)는 그랬지만 단지 왜 그럴 수 없습니까? – user1796260

관련 문제