[OE-core] [PATCH 2/4] gcc-package-target.inc: add the symbol link /lib/cpp

Cui, Dexuan dexuan.cui at intel.com
Thu Nov 24 15:37:59 UTC 2011


Richard Purdie wrote on 2011-11-24:
> On Thu, 2011-11-24 at 18:08 +0800, Dexuan Cui wrote:
>> --- a/meta/recipes-devtools/gcc/gcc-package-target.inc
>> +++ b/meta/recipes-devtools/gcc/gcc-package-target.inc
>> @@ -122,6 +122,8 @@ do_install () {
>>  	ln -sf ${TARGET_PREFIX}g++ g++
>>  	ln -sf ${TARGET_PREFIX}gcc gcc
>>  	ln -sf ${TARGET_PREFIX}cpp cpp
>> +	install -d ${D}${base_libdir}
>> +	ln -sf ${bindir}/${TARGET_PREFIX}cpp ${D}${base_libdir}/cpp
>>  	ln -sf g++ c++
>>  	ln -sf gcc cc
> 
> Why do we need this change?
When I was trying self-hosted-image, eglibc's do_install failed in the target:
ERROR: cannot stat bootparam_prot.h: the cause is: rpcgen doesn't work properly: rpcgen can't exec /lib/cpp since it doesn't exist.

According to http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/lib.html,  "if a C preprocessor is installed, /lib/cpp must be a reference to it, for historical reasons. The usual placement of this binary is /usr/bin/cpp".

Typical distros, like Ubuntu, openSuSE, Fedora, RHEL, all comply with the rule.

Actually in meta/recipes-devtools/gcc/gcc-package-target.inc, we do try to package ${base_libdir}/cpp:
 FILES_cpp = "\
  ${bindir}/${TARGET_PREFIX}cpp \
  ${base_libdir}/cpp \
  ${libexecdir}/gcc/${TARGET_SYS}/${BINV}/cc1"
But unluckily we didn't to create a symbol link in do_install. This patch adds the symbol link.

Thanks,
-- Dexuan






More information about the Openembedded-core mailing list