日期:2014-05-16  浏览次数:20586 次

询问个uclinux下用多线程时候出现的问题
我的makefile是这么写的:  
EXEC   =   hello  
OBJS   =   hello.o  

LDLIBS   +=   -lpthread  

all:   $(EXEC)  

$(EXEC):   $(OBJS)  
$(CC)   $(LDFLAGS)   -o   $@   $(OBJS)   $(LDLIBS)  

romfs:  
$(ROMFSINST)   /bin/$(EXEC)  

clean:  
-rm   -f   $(EXEC)   *.elf   *.gdb   *.o  


而且程序里也#include   <pthread.h> 了  
但是编译内核时候总是出现这样的错误,出现在我make   user_only这一步  
错误提示在include/pthread.h文件和arm-elf/sys-include/schded.h里parse   error   before   '__THROW '  
还有很多的警告:  
在pthread.h里总是紧跟上面那个错误后出现警告:data   definition   has   no   type   or   shorage   class。  
而且警告和错误提示的地方都在同一行。  
希望大虾们给个提示啊  


------解决方案--------------------
会不会是工具链的 多线程支持问题? 有三种多线支持, 这是buildroot的uclibc工具链配置菜单中提供的选项.
( ) None
( ) linuxthreads
(X) linuxthreads (stable/old)
( ) Native POSIX Threading (NPTL)

------解决方案--------------------
你有没有编译libpthread.a, 如果没有可以make menuconfig需要支持thread