读书人

Linux多线程静态编译程序可执行动

发布时间: 2013-08-09 15:16:24 作者: rapoo

Linux多线程,静态编译程序可执行,动态编译程序报Segmentation fault
使用的交叉编译arm-linux-gcc pthread.c -o a.out -lpthread -static

pthread.c源代码:


自己已经找不出是什么原因了,求大神指教!!!感激不尽。。。。 Linux 多线程 库文件 应用程序
[解决办法]
那的确是你移植的问题了。
[解决办法]
我遇到过这样的情况,kernel+rootfs是低版本的mips gcc编译的,app是高版本的mips gcc编译的,动态链接的话app运行就抛SEGV,静态链接的话正常运行。
通常rootfs里的lib是从编译器目录里提取的,猜测不同版本编译器的库二进制代码有所不同。
[解决办法]
(void*)1
这样写好吗
相当于去取内存地址为1的数据
[解决办法]
引用:
Quote: 引用:

(void*)1
这样写好吗
相当于去取内存地址为1的数据

我只是把1转化为地址,但是并没有去这个地址取值啊!而且进入threadfuc函数,我马上就把他给转为整型了,而且Linux还有VFS层,这个(void*)1也并不是指物理地址1啊!

1和void*所占字符数可能不同
指针和普通数据类型之间还是不要互转吧
[解决办法]
建议去看看动态编译和静态编译的区别,毕竟静态编译没问题。
------解决方案--------------------


libpthread.so不应该也是个链接,链接到0.10.so吗?
[解决办法]
你不传线程的参数1和2,试试看?

读书人网 >UNIXLINUX

热点推荐