最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【记录】arm-linux-gcc编译ortp出错vin_demo.c:(.text+0x38): undefined reference to `ortp_get_log_level_mask’

Linux crifan 2444浏览 0评论

【问题】

某人的编译出现以下问题:

arm-linux-gcc -O2 -I/usr/local/arm_linux_4.2//arm-linux/include -I/usr/local/arm_linux_4.2//arm-linux/sys-include -Wall --static -L/usr/local/arm_linux_4.2//lib/gcc/arm-linux/4.2.1 -L/usr/local/arm_linux_4.2//arm-linux/lib -L. vin_demo.c -o vin_demo -lc -lgcc -lc 
/tmp/ccUi1V0t.o: In function `ortp_message': 
vin_demo.c:(.text+0x38): undefined reference to `ortp_get_log_level_mask' 
vin_demo.c:(.text+0x6c): undefined reference to `ortp_logv_out' 
/tmp/ccUi1V0t.o: In function `main': 
vin_demo.c:(.text+0x138): undefined reference to `ortp_init' 
vin_demo.c:(.text+0x13c): undefined reference to `ortp_scheduler_init' 
vin_demo.c:(.text+0x144): undefined reference to `ortp_set_log_level_mask' 
vin_demo.c:(.text+0x14c): undefined reference to `rtp_session_new' 
vin_demo.c:(.text+0x158): undefined reference to `rtp_session_set_scheduling_mode' 
vin_demo.c:(.text+0x164): undefined reference to `rtp_session_set_blocking_mode' 
vin_demo.c:(.text+0x170): undefined reference to `rtp_session_set_connected_mode' 
vin_demo.c:(.text+0x188): undefined reference to `rtp_session_set_remote_addr' 
vin_demo.c:(.text+0x194): undefined reference to `rtp_session_set_payload_type' 
vin_demo.c:(.text+0x1c8): undefined reference to `rtp_session_set_ssrc' 
vin_demo.c:(.text+0x274): undefined reference to `rtp_session_send_with_ts' 
vin_demo.c:(.text+0x344): undefined reference to `rtp_session_destroy' 
vin_demo.c:(.text+0x348): undefined reference to `ortp_exit' 
vin_demo.c:(.text+0x34c): undefined reference to `ortp_global_stats_display' 
vin_demo.c:(.text+0x370): undefined reference to `rtp_session_make_time_distorsion' 
collect2: ld returned 1 exit status 
make: *** [all] Error 1 
root@ubuntu:/home/wuguocai/wgcshare/W55FA92BSP2.6.35_VDP_141204/application/test_ortp# 

 

makefile 配置如下:

.SUFFIXES : .x .o .c .s 

ROOT = /usr/local/arm_linux_4.2/ 
LIB = $(ROOT)/lib/gcc/arm-linux/4.2.1 
LIB1 =$(ROOT)/arm-linux/lib 
INCSYS:=$(ROOT)/arm-linux/sys-include 
INC :=$(ROOT)/arm-linux/include 

#ROOT = 
#LIB = 
#LIB1 = 
#INCSYS:= . 
#INC := . 


CC=arm-linux-gcc -O2 -I$(INC) -I$(INCSYS) -Wall --static 
#CC=gcc -O2 -I$(INC) -I$(INCSYS) --static 
WEC_LDFLAGS=-L$(LIB) -L$(LIB1) -L. 
STRIP=arm-linux-strip 
#STRIP=strip 

TARGET = vin_demo 
SRCS := vin_demo.c 
LIBS= -lc -lgcc -lc -lpthread 

all: 
$(CC) $(WEC_LDFLAGS) $(SRCS) -o $(TARGET) $(LIBS) 
$(STRIP) $(TARGET) 
#cp $(TARGET) ../../rootfs-2.6.35/usr/. 
#cp $(TARGET) ../../initramfs/usr/. 
echo "Please copy execution file to storage" 

clean: 
rm -f *.o 
rm -f *.x 
rm -f *.flat 
rm -f *.map 
rm -f temp 
rm -f *.img 
rm -f $(TARGET)	
rm -f *.gdb 
rm -f *.bak 

【解答过程】

1.从

vin_demo.c:(.text+0x38): undefined reference to `ortp_get_log_level_mask’

可以看出来是:

找不到函数ortp_get_log_level_mask

->需要你自己去找该函数所在的是什么库,然后需要加进来,这样编译时才能找到

->帮你去网上搜了:

undefined reference to ortp_get_log_level_mask

找到:

http://buildd.raspbian.org/status/fetch.php?pkg=linphone&arch=armhf&ver=3.6.1-2.1%2Bb2&stamp=1387744108

总的看起来,好像是:

to ortp_get_log_level_mask 应该是属于和ortp相关的库里面的。

->需要你自己去找到ortp相关的库,然后加进来,加到你的

LIBS= -lc -lgcc -lc -lpthread

里面。

这样应该就可以通过编译了。

2.我的ortp库已近安装在(makefile):

ROOT = /usr/local/arm_linux_4.2/ 
LIB1 =$(ROOT)/arm-linux/lib 

我安装ortp库的配置命令:

root@ubuntu:/home/wuguocai/wgcshare/ortp-0.23.0# CC=arm-linux-gcc ./configure --prefix=/usr/local/arm_linux_4.2/arm-linux --host=arm-none-linux-gnueabi --target=arm-none-linux-gnueabi --disable-static 

我今天发现用 gcc 编译可以通过。。。但是我用 arm-linux-gcc 编译就找不到库

3.(1)你虽然编译安装了ortp的库,但是你编译时,没有链接进去啊。

你链接时只看到:

-lc -lgcc -lc

没有类似的

-lortpxxxxx

之类的

所以肯定找不到。

(2)你把“gcc 编译可以通过”的详细log贴出来给我看看。

4.最新情况,我用arm-linux-gcc可以编译通过了。

root@ubuntu:/home/wuguocai/wgcshare/ortp-0.23.0/src/tests# arm-linux-gcc -Wall rtpsend.c -o ddddddddddddddd -lortp 

但是,我把 -lortp放到 makefile 里还是提示找到不库文件,

root@ubuntu:/home/wuguocai/wgcshare/W55FA92BSP2.6.35_VDP_141204/application/test_ortp# make 
arm-linux-gcc -O2 -I/usr/local/arm_linux_4.2//arm-linux/include -I/usr/local/arm_linux_4.2//arm-linux/sys-include -L/usr/local/arm_linux_4.2//arm-none-linux-gnueabi/bin/ld/-lortp -Wall --static -L/usr/local/arm_linux_4.2//lib/gcc/arm-linux/4.2.1 -L/usr/local/arm_linux_4.2//arm-none-linux-gnueabi/lib -L/usr/local/arm_linux_4.2//arm-none-linux-gnueabi/bin/ld/-lortp -L. vin_demo.c -o vin_demo -lc -lgcc -lc -lortp -lpthread 
/usr/local/arm_linux_4.2/lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lortp 

5.(1)可以用arm-linux-gcc编译通过了

那说明你的makefile里面的include路径(用-I添加的那些路径)中,的确包含了ortp所在的位置了。

(2)我把 -lortp放到 makefile 里还是提示找到不库文件

看起来有问题:

有问题啊

因为:

-Lxxx

其中的xxx,是一个路径,

而你这里的:

-L/usr/local/arm_linux_4.2//arm-none-linux-gnueabi/bin/ld/-lortp

中的xxx是:

-L/usr/local/arm_linux_4.2//arm-none-linux-gnueabi/bin/ld/-lortp

很明显不是一个路径

->很明显前半部分:

-L/usr/local/arm_linux_4.2//arm-none-linux-gnueabi/bin/ld/

(可能)是一个路径

而后半部分:

-lortp

明显是加进去的

导致上述路径有问题。

所以:

你是怎么把-lortp加到Makefile里面的???

把Makefile完整内容贴出来我看看。

(猜测你是中间少了空格了,导致前面的-L路径 和 -lortp连到一起,导致出错了。)

6.我的ortp库安装在:

root@ubuntu:/usr/local/arm_linux_4.2/arm-linux/lib# ls -l 
-rwxr-xr-x 1 root root 949 Jan 6 zz:zz:zz libortp.la 
lrwxrwxrwx 1 root root 16 Jan 6 zz:zz:zz libortp.so -> libortp.so.9.0.0 
lrwxrwxrwx 1 root root 16 Jan 6 zz:zz:zz libortp.so.9 -> libortp.so.9.0.0 
-rwxr-xr-x 1 root root 499818 Jan 6 zz:zz:zz libortp.so.9.0.0 

我的makefile配置文件:

.SUFFIXES : .x .o .c .s 

ROOT = /usr/local/arm_linux_4.2/ 
LIB = $(ROOT)/lib/gcc/arm-linux/4.2.1 
LIB1 = $(ROOT)/arm-none-linux-gnueabi/lib 
LIB2 = $(ROOT)/arm-none-linux-gnueabi/bin/ld/-lortp 
INCSYS:=$(ROOT)/arm-linux/sys-include 
INC :=$(ROOT)/arm-linux/include 

#ROOT = 
#LIB = 
#LIB1 = 
#INCSYS:= . 
#INC := . 


CC=arm-linux-gcc -O2 -I$(INC) -I$(INCSYS) -L$(LIB2) -Wall --static 
#CC=gcc -O2 -I$(INC) -I$(INCSYS) --static 
WEC_LDFLAGS=-L$(LIB) -L$(LIB1) -L$(LIB2) -L. 
STRIP=arm-linux-strip 
#STRIP=strip 

TARGET = vin_demo 
SRCS := vin_demo.c 
LIBS= -lc -lgcc -lc -lortp -lpthread 

all: 
$(CC) $(WEC_LDFLAGS) $(SRCS) -o $(TARGET) $(LIBS) 
$(STRIP) $(TARGET) 
#cp $(TARGET) ../../rootfs-2.6.35/usr/. 
#cp $(TARGET) ../../initramfs/usr/. 
echo "Please copy execution file to storage" 

clean: 
rm -f *.o 
rm -f *.x 
rm -f *.flat 
rm -f *.map 
rm -f temp 
rm -f *.img 
rm -f $(TARGET)	
rm -f *.gdb 
rm -f *.bak

7.

LIB2 = $(ROOT)/arm-none-linux-gnueabi/bin/ld/-lortp

很明显就是错误的:

先要明白的是:

Linux下面的编译的参数:

-Lxxx

-lxxx

的区别和含义:

-L,大写的L,后面的xxx,指的是:库函数的路径 -> -L/usr/lib 指的是:当编译程序的时候,搜索库的时候,去/usb/lib这个文件夹中搜索(所需要的库文件)

-l,小写的l,后面的xxx,指的是:库文件的文件名(的简写) -> -lortp 指的是:在编译搜索库的时候,需要搜索的(其中一个库文件)是libortp.so

所以,你的:

LIB2 = $(ROOT)/arm-none-linux-gnueabi/bin/ld/-lortp

对应着最终编译时的:

-L$(LIB2)

->

/usr/local/arm_linux_4.2//arm-none-linux-gnueabi/lib -L/usr/local/arm_linux_4.2//arm-none-linux-gnueabi/bin/ld/-lortp

明显就是一个无效的,非法的路径(文件夹)

而根据经验明显是:

/usr/local/arm_linux_4.2//arm-none-linux-gnueabi/lib -L/usr/local/arm_linux_4.2//arm-none-linux-gnueabi/bin/ld

是一个文件:ld链接程序文件

而后面的

/-lortp

更是无效的。

此处的路径明显是:

你想要添加-lortp,但是(不知所以的),随便乱(误)添加的

而导致你误添加到这里,是由于你此处的链接路径的变量,写的有问题:

此处的:

LIB2,被后面用到的是:

-L$(LIB2)

就意味着:

此处的LIB2,只是一个链接路径(文件夹)

和你写成LIB2的原意:一个库文件

违背了。

正确的,合理的做法应该是:

把LIB2改为,可以看出来是表示着,库文件路径,的名字

比如:

LIBINCLUDE

LIBINC

意味着library include==库文件所要包含的(搜索)路径

所以,此处的:

LIB  = $(ROOT)/lib/gcc/arm-linux/4.2.1
LIB1 = $(ROOT)/arm-none-linux-gnueabi/lib
LIB2 = $(ROOT)/arm-none-linux-gnueabi/bin/ld/-lortp

WEC_LDFLAGS=-L$(LIB) -L$(LIB1) -L$(LIB2) -L.

应该改为:

LIBINC  = $(ROOT)/lib/gcc/arm-linux/4.2.1
LIBINC1= $(ROOT)/arm-none-linux-gnueabi/lib
LIBINC2 = $(ROOT)/arm-linux/lib

WEC_LDFLAGS=-L$(LIBINC) -L$(LIBINC1) -L$(LIBINC2) -L.

会更易读懂,且是include了正确的路径。

8.你这句话说的非常正确(你想要添加-lortp,但是(不知所以的),随便乱(误)添加的)。。。谢谢你的指点。

ORTP就是一个通用库,本来安装就可以使用,但在我这偏偏不顺利,此问题已经弄了N天了,,呵呵。。。

你说的方法我已试过,但我怕我之前的有误,我还是拷贝你的代码重试了一遍。

makefile 文件:

.SUFFIXES : .x .o .c .s 

ROOT = /usr/local/arm_linux_4.2/ 
LIB = $(ROOT)/lib/gcc/arm-linux/4.2.1 
LIB1 = $(ROOT)/arm-none-linux-gnueabi/lib 
LIB2 = $(ROOT)/arm-none-linux-gnueabi/bin/ld/-lortp 
INCSYS:=$(ROOT)/arm-linux/sys-include 
INC :=$(ROOT)/arm-linux/include 

LIBINC = $(ROOT)/lib/gcc/arm-linux/4.2.1 
LIBINC1 = $(ROOT)/arm-none-linux-gnueabi/lib 
LIBINC2 = $(ROOT)/arm-linux/lib 

#ROOT = 
#LIB = 
#LIB1 = 
#INCSYS:= . 
#INC := . 

CC=arm-linux-gcc -O2 -I$(INC) -I$(INCSYS) -Wall --static 
#CC=gcc -O2 -I$(INC) -I$(INCSYS) --static 
#WEC_LDFLAGS=-L$(LIB) -L$(LIB1) -L$(LIB2) -L. 
WEC_LDFLAGS=-L$(LIBINC) -L$(LIBINC1) -L$(LIBINC2) -L. 
STRIP=arm-linux-strip 
#STRIP=strip 

TARGET = vin_demo 
SRCS := vin_demo.c 
LIBS= -lc -lgcc -lc -lpthread -lortp 

all: 
$(CC) $(WEC_LDFLAGS) $(SRCS) -o $(TARGET) $(LIBS) 
$(STRIP) $(TARGET) 
#cp $(TARGET) ../../rootfs-2.6.35/usr/. 
#cp $(TARGET) ../../initramfs/usr/. 
echo "Please copy execution file to storage" 

clean: 
rm -f *.o 
rm -f *.x 
rm -f *.flat 
rm -f *.map 
rm -f temp 
rm -f *.img 
rm -f $(TARGET)	
rm -f *.gdb 
rm -f *.bak 

编译结果:

root@ubuntu:/home/wuguocai/wgcshare/W55FA92BSP2.6.35_VDP_141204/application/test_ortp# make 
arm-linux-gcc -O2 -I/usr/local/arm_linux_4.2//arm-linux/include -I/usr/local/arm_linux_4.2//arm-linux/sys-include -Wall --static -L/usr/local/arm_linux_4.2//lib/gcc/arm-linux/4.2.1 -L/usr/local/arm_linux_4.2//arm-none-linux-gnueabi/lib -L/usr/local/arm_linux_4.2//arm-linux/lib -L. vin_demo.c -o vin_demo -lc -lgcc -lc -lpthread -lortp 
/usr/local/arm_linux_4.2/lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lortp 
collect2: ld returned 1 exit status 
make: *** [all] Error 1 
root@ubuntu:/home/wuguocai/wgcshare/W55FA92BSP2.6.35_VDP_141204/application/test_ortp#

9.从make的输出结果:

arm-linux-gcc -O2 -I/usr/local/arm_linux_4.2//arm-linux/include -I/usr/local/arm_linux_4.2//arm-linux/sys-include -Wall --static -L/usr/local/arm_linux_4.2//lib/gcc/arm-linux/4.2.1 -L/usr/local/arm_linux_4.2//arm-none-linux-gnueabi/lib -L/usr/local/arm_linux_4.2//arm-linux/lib -L. vin_demo.c -o vin_demo -lc -lgcc -lc -lpthread -lortp 

可以看出,除了我之前说的错误,还有其他很多问题或者不太好的做法:

(1)

-I/usr/local/arm_linux_4.2//arm-linux/include

-I表示Include一个路径

此处参数是

/usr/local/arm_linux_4.2//arm-linux/include

但是标准的Linux下面的路径,中间是斜杠/,而不应该有两个斜杠//

所以,按道理来说应该是:

/usr/local/arm_linux_4.2/arm-linux/include

(1.1)不过,好像写成两个斜杠//,linux也是可以识别的。

但是最好不要这么写。

(1.2)不过Linux是否可以识别带两个斜杠的路径,你最好自己去验证一下:

用Linux里面的ls之类的命令,去测试看看这样写的路径是否可以被ls识别,比如:

ls /usr/local/arm_linux_4.2/arm-linux/include

比如可以正常执行,而不报无法识别此路径,那么说明这样写的确也是可以的。

(1.3)出现两个斜杠的问题的原因是:

定义一个路径时,最末尾你多写了个斜杠

即:

ROOT = /usr/local/arm_linux_4.2/

应该写成:

ROOT = /usr/local/arm_linux_4.2

才对。

这样后面的路径,就是:

/usr/local/arm_linux_4.2/

加上

arm-linux/include

就是正常的:

/usr/local/arm_linux_4.2/arm-linux/include

而不是:

/usr/local/arm_linux_4.2//arm-linux/include

了。

后续其他的,-I和-L后面的,带两个斜杠的路径,也是同样的问题。

(2)

(2.1)基于你之前已经去到目录:

/usr/local/arm_linux_4.2/arm-linux/lib

中ls可以列出来对应的ortp的库文件:

libortp.so

(2.2)且:

已经确保路径:

/usr/local/arm_linux_4.2//arm-linux/lib

是可以有效的,可以访问的,

后者已经改为了:

/usr/local/arm_linux_4.2/arm-linux/lib

的前提下:

如果还是找不到这个库文件:

有两种思路,去继续深入的研究此错误的原因:

(a)去确认库文件是否是此处所希望的arm平台的

去/usr/local/arm_linux_4.2/arm-linux/lib下,输入:

file libortp.so

可以得到输出结果,从中可以看出是针对arm的还是PC端x86平台的。

如果看不懂,贴出结果给我看。

(b)加入-v参数使得编译输出详细信息,以便分析编译的链接期间真正去搜索的库文件是什么

即,把:

CC=arm-linux-gcc -O2 -I$(INC) -I$(INCSYS) -Wall –static

换成:

CC=arm-linux-gcc -v -O2 -I$(INC) -I$(INCSYS) -Wall –static

然后看看make后的输出结果:

应该是输出很多信息,其中可以看出其搜索路径的详细过程

->以便分析错误的原因,是搜索库时搜索路径不存在的问题,还是搜索库文件的文件不存在的问题

另外,对于gcc的很多参数的含义,贴出我刚整理的,供参考:

关于gcc编译时的各种参数,gcc手册里面可以找到详细解释。

而关于gcc手册,网上就有很多:

GCC online documentation – GNU Project – Free Software Foundation (FSF)

->

比如4.9.2的:

Using the GNU Compiler Collection (GCC)

->

其中关于各种参数,这里有个概述:

Option Summary – Using the GNU Compiler Collection (GCC)

比如常见的:

include文件夹的:-I就属于:



Directory Options

See Options for Directory Search.

-Bprefix -Idir -iplugindir=dir

-iquotedir -Ldir -specs=file -I-

–sysroot=dir –no-sysroot-suffix

link库的:-l就属于:

Linker Options

See Options for Linking.

object-file-name -llibrary

-nostartfiles -nodefaultlibs -nostdlib -pie -rdynamic

-s -static -static-libgcc -static-libstdc++

-static-libasan -static-libtsan -static-liblsan -static-libubsan

-shared -shared-libgcc -symbolic

-T script -Wl,option -Xlinker option

-u symbol

 

10.感谢你耐心的解答,终于编译通过了。。。。。感谢 感谢 感谢。。。。。

root@ubuntu:/home/wuguocai/wgcshare/W55FA92BSP2.6.35_VDP_141204/application/test_ortp# make 
arm-linux-gcc -v -O2 -I/usr/local/arm_linux_4.2/arm-linux/include -I/usr/local/arm_linux_4.2/arm-linux/sys-include -Wall -L/usr/local/arm_linux_4.2/lib/gcc/arm-linux/4.2.1 -L/usr/local/arm_linux_4.2/arm-linux/lib -L. vin_demo.c -o vin_demo -lc -lgcc -lc -lpthread -lortp 
Using built-in specs. 
Target: arm-none-linux-gnueabi 
Configured with: ../../gcc-4.2.1/configure --prefix=/usr/local/arm_linux_4.2 --target=arm-none-linux-gnueabi --enable-languages=c,c++ --with-gnu-ld --with-gnu-as --disable-nls --with-float=soft --without-newlib --disable-libmudflap --disable-libssp --disable-libgomp 
Thread model: posix 
gcc version 4.2.1 
/usr/local/arm_linux_4.2/libexec/gcc/arm-none-linux-gnueabi/4.2.1/cc1 -quiet -v -I/usr/local/arm_linux_4.2/arm-linux/include -I/usr/local/arm_linux_4.2/arm-linux/sys-include vin_demo.c -quiet -dumpbase vin_demo.c -mfloat-abi=soft -auxbase vin_demo -O2 -Wall -version -o /tmp/ccxcVNT2.s 
ignoring nonexistent directory "/usr/local/arm_linux_4.2/lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/sys-include" 
ignoring duplicate directory "/usr/local/arm_linux_4.2/arm-linux/include" 
as it is a non-system directory that duplicates a system directory 
ignoring nonexistent directory "/usr/local/arm_linux_4.2/arm-linux/sys-include" 
#include "..." search starts here: 
#include <...> search starts here: 
/usr/local/arm_linux_4.2/lib/gcc/arm-none-linux-gnueabi/4.2.1/include 
/usr/local/arm_linux_4.2/lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/include 
End of search list. 
GNU C version 4.2.1 (arm-none-linux-gnueabi) 
compiled by GNU C version 3.2 20020903 (Red Hat Linux 8.0 3.2-7). 
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 
Compiler executable checksum: c4267096e17e56c9b241c4fd25aab684 
/usr/local/arm_linux_4.2/lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/as -mfloat-abi=soft -meabi=4 -o /tmp/ccgwzW31.o /tmp/ccxcVNT2.s 
/usr/local/arm_linux_4.2/libexec/gcc/arm-none-linux-gnueabi/4.2.1/collect2 --eh-frame-hdr -dynamic-linker /lib/ld-linux.so.3 -X -m armelf_linux_eabi -o vin_demo /usr/local/arm_linux_4.2/lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/lib/crt1.o /usr/local/arm_linux_4.2/lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/lib/crti.o /usr/local/arm_linux_4.2/lib/gcc/arm-none-linux-gnueabi/4.2.1/crtbegin.o -L/usr/local/arm_linux_4.2/lib/gcc/arm-linux/4.2.1 -L/usr/local/arm_linux_4.2/arm-linux/lib -L. -L/usr/local/arm_linux_4.2/lib/gcc/arm-none-linux-gnueabi/4.2.1 -L/usr/local/arm_linux_4.2/lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/lib /tmp/ccgwzW31.o -lc -lgcc -lc -lpthread -lortp -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/local/arm_linux_4.2/lib/gcc/arm-none-linux-gnueabi/4.2.1/crtend.o /usr/local/arm_linux_4.2/lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/lib/crtn.o 
arm-linux-strip vin_demo 
#cp vin_demo ../../rootfs-2.6.35/usr/. 
#cp vin_demo ../../initramfs/usr/. 
echo "Please copy execution file to storage" 
Please copy execution file to storage 
root@ubuntu:/home/wuguocai/wgcshare/W55FA92BSP2.6.35_VDP_141204/application/test_ortp#

 

【总结】

想要折腾Linux下面的开发,还是需要多学习和掌握gcc的基本知识,包括gcc参数和编译链接的基本流程和逻辑,才能一步步的解决问题。

转载请注明:在路上 » 【记录】arm-linux-gcc编译ortp出错vin_demo.c:(.text+0x38): undefined reference to `ortp_get_log_level_mask’

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
84 queries in 0.156 seconds, using 22.09MB memory