- 论坛徽章:
- 0
|
上个礼拜六将DBus交叉编译成功, 这个礼拜主要是将测试程序在开发板上跑起来.
1. 交叉编译源文件, 例如test.c 编译过程中主要有2个问题, 1个是header file, 1个是dbus动态库的引用.
写一个Makefile解决
例如:
#Makefile
CC=arm-unknown-linux-gnu-gcc
CFLAGS=-Wall -g -shared #compiler args
#include header file
CFLAGS += -I/home/songys/dbus/lib/include \
-I/home/songys/dbus/lib/include/glib-2.0 \
-I/home/songys/dbus/lib/lib/glib-2.0/include \
-I/home/songys/dbus/lib/include/dbus-1.0 \
-I/home/songys/dbus/lib/lib/dbus-1.0/include \
#link .so dynamic lib
LDFLAGS:=-lpthread -L/home/songys/dbus/lib/lib -ldbus-1
SRCDIRS=.
PROGRAMS=test
SRCS=$(foreach dir,$(SRCDIRS),$(wildcard $(dir)/*.c))
OBJS=$(SRCS:.c=.o)
DEPENDS=$(SRCS:.c)
all: $(PROGRAM)
%.d:%.c
$(CC) $(DEPENDFLAG) $(CFLAGS) \
sed "s?\\(.*\\):?$(basename $ $@ || $(RM) $@
$(PROGRAMS): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(filter %.o ,$+)
include $(DEPENDS)
clean:
rm $(OBJS) $(DEPENDS) $(PROGRAMS)
或者: arm-unknown-linux-gnu-gcc -I/home/songys/dbus/lib/include/dbus-1.0/
-I/home/songys/dbus/lib/include
-I/home/songys/dbus/lib/include/glib-2.0
-I/home/songys/dbus/lib/lib/glib-2.0/include
-I/home/songys/dbus/lib/lib/dbus-1.0/include
-L/home/songys/dbus/lib/lib -ldbus-1
eg2.c -o eg2
make test生成一个arm-linux可执行文件test.
2. 将/lib /bin及test拷贝到NFS的rootfs, 启动开发板
3. 转帖
http://hi.baidu.com/lihuanhai1943/blog/item/00ef57faf02907dab58f3113.html
在开发板上运行命令:
# dbus-dameon --system
Failed to start message bus: Failed to open "/usr/local/etc/dbus-1/system.conf":
No such file or directory
于是我又到dbus-1.0.2中找了个system.conf
# dbus-dameon --system
Failed to start message bus: Failed to open :".....system.d" No such file or directory
于是响应目录下建了个system.d文件夹
# dbus-dameon --system
Failed to start message bus: Failed to bind socket "/var/run/dbus/system_bus_soc ket
No such file or directory
自己就硬着头皮建一个system_bus_soc ket,结果
# dbus-dameon --system
Failed to start message bus: Failed to bind socket "/var/run/dbus/system_bus_soc ket:Address already in use
郁闷,删掉system_bus_soc ket,只留/var/run/dbus/
# dbus-dameon --system
Failed to start message bus:Could not get UID and GID for username "messagebus"
网上让用/usr/sbin/adduser messagebus,奶奶的开发板上没有这个命令,难道在编译busy-box,还是算了吧,麻烦,忽然看到网上说可以用添加文件的方式添加用户,/etc/passwd下,在pc linux下用一下/usr/sbin/adduser messagebus,发现就在/etc/passwd下,添加了一行messagebus:x:500:500::/home/messagebus:/bin/bash,看开发板上,只是有个root,于是复制进去,root后/bin/sh,所以为了保持一致,也改为messagebus:x:500:500::/home/messagebus:/bin/sh
passwd内容如下:
root::0:0:root:/:/bin/sh
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
nobody:*:99:99:Nobody:/:
messagebus:x:500:500::/home/messagebus:/bin/sh
# dbus-dameon --system
哈哈,该死的错误没了,高兴
4. dbus-daemon --system --print-pid --print-address
rm /home/songys/dbus/lib/var/run/dbus/pid
dbus-launch --sh-syntax --exit-with-session
dbus-launch /tmp/test
测试程序运行成功, 但是2个session互发消息的测试还没有调试出来5555555
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/99283/showart_1976658.html |
|