buildroot SYSROOT PKG_CONFIG_SYSROOT_DIR 应用程序 Makefile

APP = dbus-ping-listen

SYSROOT=/mnt/workspace/osrc/sources/buildroot/output/host/usr/arm-buildroot-linux-gnueabihf/sysroot
# Add any other object files to this list below
APP_OBJS = dbus-ping-listen.o
CROSS_COMPILE=arm-linux-gnueabihf-
CC=${CROSS_COMPILE}gcc --sysroot=${SYSROOT}
CXX=${CROSS_COMPILE}g++ --sysroot=${SYSROOT}
LD=${CROSS_COMPILE}gcc --sysroot=${SYSROOT}
AR=${CROSS_COMPILE}ar
RANLIB=${CROSS_COMPILE}ranlib
STRIP=${CROSS_COMPILE}strip

ifdef SYSROOT
PKG_CONFIG := PKG_CONFIG_PATH=${SYSROOT}/usr/lib/pkgconfig/ PKG_CONFIG_SYSROOT_DIR=${SYSROOT} pkg-config
CFLAGS := ${CFLAGS}
LDFLAGS := ${LDFLAGS} --sysroot=${SYSROOT} -L${SYSROOT}/usr/lib
else
PKG_CONFIG := PKG_CONFIG_PATH=${SYSROOT}/usr/lib/pkgconfig/ pkg-config
endif


#PKG_CONFIG=${SYSROOT}/usr/lib/pkgconfig


pkg_packages :=  glib-2.0  dbus-1  dbus-glib-1

#PKG_CFLAGS  := $(shell pkg-config   --cflags $(pkg_packages))
#PKG_LDFLAGS := $(shell pkg-config   --libs $(pkg_packages))


CFLAGS := ${CFLAGS} $(shell ${PKG_CONFIG} --cflags --libs ${pkg_packages})
LDFLAGS := ${LDFLAGS} $(shell ${PKG_CONFIG} --libs ${pkg_packages})


ADD_CFLAGS := -g

#CFLAGS  := $(PKG_CFLAGS) $(ADD_CFLAGS) $(CFLAGS)
#LDFLAGS := $(PKG_LDFLAGS) $(LDFLAGS)

all: build

build: $(APP)

$(APP): $(APP_OBJS)
    $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(APP_OBJS) $(LDLIBS)
clean:
    rm -f *.o $(APP)

 

参考:

PKG_CONFIG_LIBDIR覆盖了pkg-config默认的搜索路径。
PKG_CONFIG_SYSROOT_DIR是为了交叉编译准备的,它的值会加到参数前。

ARTIK_SDK_LIBS := \
	libartik-sdk-base \
	libartik-sdk-connectivity

TEST_EXE_NAME := websocket-test
TEST_OBJS := \
	artik_websocket_test.o

CLOUD_EXE_NAME := websocket-cloud
CLOUD_OBJS := \
	artik_websocket_cloud_test.o

CLIENT_EXE_NAME := websocket-client
CLIENT_OBJS := \
	artik_websocket_client_test.o

CC := ${CROSS_COMPILE}gcc
ifdef SYSROOT
PKG_CONFIG := PKG_CONFIG_PATH=${SYSROOT}/usr/lib/pkgconfig/ PKG_CONFIG_SYSROOT_DIR=${SYSROOT} pkg-config
CFLAGS := ${CFLAGS}
LDFLAGS := ${LDFLAGS} --sysroot=${SYSROOT} -L${SYSROOT}/usr/lib
else
PKG_CONFIG := PKG_CONFIG_PATH=${SYSROOT}/usr/lib/pkgconfig/ pkg-config
endif

CFLAGS := ${CFLAGS} $(shell ${PKG_CONFIG} --cflags --libs ${ARTIK_SDK_LIBS})
LDFLAGS := ${LDFLAGS} $(shell ${PKG_CONFIG} --libs ${ARTIK_SDK_LIBS})

%.o: %.c
	$(CC) -c -o $@ $< $(CFLAGS)

$(TEST_EXE_NAME): $(TEST_OBJS)
	${CC} -o $@ $^ $(LDFLAGS)

$(CLOUD_EXE_NAME): $(CLOUD_OBJS)
	${CC} -o $@ $^ $(LDFLAGS)

$(CLIENT_EXE_NAME): $(CLIENT_OBJS)
	${CC} -o $@ $^ $(LDFLAGS)

all: $(TEST_EXE_NAME) $(CLOUD_EXE_NAME) $(CLIENT_EXE_NAME)

clean:
	rm -f *.o $(TEST_EXE_NAME) $(CLOUD_EXE_NAME) $(CLIENT_EXE_NAME)

ubuntu dbus 开发环境建立:

安装 dbus 

sudo apt-get install libdbus-1-dev

安装 glib2.0
apt-get install libgtk2.0-dev


安装 dbus-glib
apt-get install libdbus-glib-1-dev

 

etc/profile.d

# cd profile.d/
# ls
dbus.sh   umask.sh
# cat dbus.sh 
if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
      ## if not found, launch a new one
      eval `dbus-launch --sh-syntax`
      echo "D-Bus per-session daemon address is: $DBUS_SESSION_BUS_ADDRESS"
      export DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS
  fi

 


版权声明:本文为linuxarmsummary原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。