⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 get-needed-libgcc-objects.sh

📁 linux下用PCMCIA无线网卡虚拟无线AP的程序源码
💻 SH
字号:
#!/bin/sh## Manuel Novoa III       Jan 2001## The purpose of this script is to extract the object files from libgcc.a# that are needed by the shared uClibc so that they won't be linked with# each application.## I'm sure people with better shell programming skills can improve this.# Feel free!  ;-)  At this point though, it gets the job done for me.## Possible problems (paranioa mode):  Are any of the objects in libgcc.a# needed to actually load the shared library on any archs?LIBGCC=`$CC -print-libgcc-file-name`echo Finding missing symbols in libc.a ...echo "    partial linking..."rm -f libc.ldr$LD -r -o libc.ldr ../crt0.o --whole-archive ../libc.aif $NM --undefined-only libc.ldr | grep -v "^main$" > sym.need ; then    rm -f obj.need    touch obj.need    for SYM in `cat sym.need | sed -e 's/ U //g'` ; do	if $NM -s $LIBGCC | grep -q $SYM" in " ; then	    $NM -s $LIBGCC | grep $SYM" in " | cut -d' ' -f3 >> obj.need	else	    echo Symbol $SYM needed by libc.a but not found in libgcc.a	fi    doneelse    echo No missing symbols found.    exit 0firm -rf tmp-gccmkdir tmp-gcc(cd tmp-gcc ; $AR -x $LIBGCC)rm -f libgcc.ldrecho Extracting referenced libgcc.a objects ...rm -f obj.need.0touch obj.need.0while [ -s obj.need ] && ! cmp -s obj.need obj.need.0 ; do    (cd tmp-gcc ; cat ../obj.need | uniq | xargs $LD -r -o ../libgcc.ldr)    cp obj.need obj.need.0    if $NM --undefined-only libgcc.ldr > sym.need ; then	for SYM in `cat sym.need | sed -e 's/ U //g'` ; do	    if $NM -s $LIBGCC | grep -q $SYM" in " ; then		$NM -s $LIBGCC | grep $SYM" in " | cut -d' ' -f3 >> obj.need	    fi	done    fidonecat obj.need | sort | uniq > obj.need.0(cd tmp-gcc ; cp `cat ../obj.need` ..)if [ -s obj.need.0 ] ; then    echo Objects added from $LIBGCC:    cat obj.need.0    (cd tmp-gcc ; cat ../obj.need | uniq | xargs $AR r ../libgcc-need.a)else    echo No objects added from $LIBGCC.fiif [ -s sym.need ] ; then    echo Symbols missing from libgcc.a:    cat sym.needelse    echo Donefiexit 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -