当前位置: 技术问答>linux和unix
Linux下的gcc编译问题
来源: 互联网 发布时间:2015-09-22
本文导语: 为啥使用semaphore和shared memory的程序,在编译成可执行文件时都要加-lrt 例如:gcc test.c -o test.o -lrt 不加-lrt就会显示sem_open...shm_open未被引用 有这样一段编译文件 ----------------------------------------------------------- gcc -c ...
为啥使用semaphore和shared memory的程序,在编译成可执行文件时都要加-lrt
例如:gcc test.c -o test.o -lrt
不加-lrt就会显示sem_open...shm_open未被引用
有这样一段编译文件
-----------------------------------------------------------
gcc -c MODBUS.c -o MODBUS.o
ar -r libMODBUS.a MODBUS.o serialport.o error.o inifile.o
gcc test.c -o test.o -static -L. -lMODBUS
-----------------------------------------------------------
我在MODBUS.c中使用了semaphore和shared memory,因为文件里没加-lrt参数,所以会显示sem_open,shm_open等函数未被引用错误,但是加-lrt参数,gcc test.c -o test.o -static -L. -lMODBUS -lrt,编译也不通过。
请大家指教
例如:gcc test.c -o test.o -lrt
不加-lrt就会显示sem_open...shm_open未被引用
有这样一段编译文件
-----------------------------------------------------------
gcc -c MODBUS.c -o MODBUS.o
ar -r libMODBUS.a MODBUS.o serialport.o error.o inifile.o
gcc test.c -o test.o -static -L. -lMODBUS
-----------------------------------------------------------
我在MODBUS.c中使用了semaphore和shared memory,因为文件里没加-lrt参数,所以会显示sem_open,shm_open等函数未被引用错误,但是加-lrt参数,gcc test.c -o test.o -static -L. -lMODBUS -lrt,编译也不通过。
请大家指教
|
静态编译-static参数不能和-lrt连用,去掉-static就行了