- 论坛徽章:
- 0
|
我前2天交叉编译dbus成功了
现在编译一个简单的测试程序, 好不容易把dbus动态链接库的问题解决了, 现在又报个莫名其妙的错误:
/home/songys/gcc-4.0.2-glibc-2.3.5/arm-unknown-linux-gnu/bin/../lib/gcc/arm-unknown-linux-gnu/4.0.2/../../../../arm-unknown-linux-gnu/lib/crt1.o: In function `_start':
init.c.text+0x30): undefined reference to `main'
collect2: ld returned 1 exit status
/gcc-4.0.2-glibc-2.3.5/arm-unknown-linux-gnu/bin/ 放的是我的arm交叉编译工具链,
我用的*-gcc命令是: 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 test.c -o test.o
有没有大虾帮忙看下啊!!!很着急55555555
测试程序如下
/*test.c*/
#include <dbus/dbus.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <dlfcn.h>
DBusError err;
DBusConnection *mainConn;
DBusConnection *secConn;
DBusConnection *subConn;
DBusConnection *thrdConn;
void subBlock()
{
printf("\nget dbus connection in sub function...................\n"
//(1)
subConn = dbus_bus_get(DBUS_BUS_SESSION, &err);
//(2)
//subConn = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
if (dbus_error_is_set(&err))
{
fprintf(stderr, "Connection Error (%s)\n", err.message);
dbus_error_free(&err);
}
if (NULL == subConn)
{
fprintf(stderr, "subConn point to NULL\n"
exit(1);
}
if (mainConn == subConn)
{
printf("mainConn and subConn are homo connection. unique name : %s\n", dbus_bus_get_unique_name(mainConn));
}
else
{
printf("\nmainConn and subConn are different connection\n"
printf("mainConn's unique name : %s\n", dbus_bus_get_unique_name(mainConn));
printf("secConn's unique name : %s\n", dbus_bus_get_unique_name(subConn));
}
if (secConn == subConn){
printf("secConn and subConn are homo connections. unique name : %s\n", dbus_bus_get_unique_name(secConn));
}
else{
printf("\nsecConn and subConn are different connection\n"
printf("secConn's unique name : %s\n", dbus_bus_get_unique_name(secConn));
printf("subConn's unique name : %s\n", dbus_bus_get_unique_name(subConn));
}
}
void* thrdBlock(void *vargs){
printf("\nget dbus connection in thread function...........................\n"
//(1)
thrdConn = dbus_bus_get(DBUS_BUS_SESSION, &err);
//(2)
//thrdConn = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
if (dbus_error_is_set(&err)){
fprintf(stderr, "Connection Error (%s)\n", err.message);
dbus_error_free(&err);
}
if (NULL == thrdConn){
fprintf(stderr, "thredConn point to NULL\n"
exit(1);
}
if (mainConn == thrdConn){
printf("mainConn and thrdConn are homo connection. unique name : %s\n", dbus_bus_get_unique_name(mainConn));
}
else{
printf("\nmainConn and thrdConn are different connection.\n"
printf("mainConn's uniquename : %s\n", dbus_bus_get_unique_name(mainConn));
printf("thrdConn's uniquename : %s\n", dbus_bus_get_unique_name(thrdConn));
}
if (secConn == thrdConn){
printf("secConn and thrdConn are homo connection. unique name : %s\n", dbus_bus_get_unique_name(secConn));
}
else{
printf("\nsecConn and thrdConn are different connection.\n"
printf("secConn's uniquname : %s\n", dbus_bus_get_unique_name(secConn));
printf("thrdConn's uniquename : %s\n", dbus_bus_get_unique_name(thrdConn));
}
if (subConn == thrdConn){
printf("subConn and thrdConn are homo connection. unique name : %s\n", dbus_bus_get_unique_name(subConn));
}
else{
printf("\nsubConn and thrdConn are different connection.\n"
printf("subConn's uniquename : %s\n", dbus_bus_get_unique_name(subConn));
printf("thrdConn's uniquename : %s\n ", dbus_bus_get_unique_name(thrdConn));
}
}
int main(int argc, char **argv){
pthread_t thrdId;
printf("\nget dbus connection in main function............................\n"
dbus_error_init(&err);
//(1)
mainConn = dbus_bus_get(DBUS_BUS_SESSION, &err);
//(2)
//mainConn = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
if (dbus_error_is_set(&err)){
fprintf(stderr, "Connection Error (%s)\n", err.message);
dbus_error_free(&err);
}
if (NULL == mainConn){
fprintf(stderr, "mainConn point to Null\n");
exit(1);
}
sleep(3);
//(1)
secConn = dbus_bus_get(DBUS_BUS_SESSION, &err);
//(2)
//secConn = dbus_bus_get_private(DBUS_BUS_SESSION, &err);
if (dbus_error_is_set(&err)){
fprintf(stderr, "Connection Error (%s)\n", err.message);
dbus_error_free(&err);
}
if (NULL == secConn){
fprintf(stderr, "secConn point to NULL\n");
exit(1);
}
if (mainConn == secConn){
printf("mainConn and secConn are homo connection. unique name : %s\n", dbus_bus_get_unique_name(mainConn));
}
else{
printf("\nmainConn and secConn are different connection\n");
printf("mainConn's unique name : %s\n", dbus_bus_get_unique_name(mainConn));
printf("secConn's unique name : %s\n", dbus_bus_get_unique_name(secConn));
}
subBlock();
pthread_create(&thrdId, NULL, thrdBlock, NULL);
pthread_join(thrdId, NULL);
}
[ 本帖最后由 klutercoco 于 2009-6-23 15:07 编辑 ] |
|