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
#