2014-11-10 8 views
-1

하드웨어 주변 장치와 통신하는 내장 C 정적 라이브러리가 있습니다. 현재 여러 하드웨어 주변 장치를 지원하지 않지만 두 번째 인터페이스와 인터페이스해야합니다. 나는 코드 발자국에 대해 신경 쓰지 않는다. 그래서 그 라이브러리를 복제하고 싶습니다. 각 하드웨어마다 하나씩.모든 c 라이브러리 함수에 접두사를 추가하여 SRC 디렉토리 복사

물론 심볼 충돌이 발생합니다. 좋은 방법은 objcopy를 사용하여 오브젝트 파일에 접두사를 추가하는 것입니다. 그래서 나는 hw1_fun1.o와 hw2_fun1.o를 얻을 수 있습니다. 이것은 post입니다.

개체가 아닌 원본 수준의 모든 c 함수에 접두사를 추가하고 싶습니다. 왜냐하면 hw2를 약간 수정해야하기 때문입니다.

모든 스크립트, C 프리 프로세서가 있는가, 같은 것을 할 수 있습니다 도구 : 내가 필요한 기능을 수행하는 간단한 bash는 스크립트를 작성 :

+0

라이브러리의 소스 코드에 액세스 할 수 있습니까? –

+1

소스 코드를 편집 할 수 있으면 고유 한 이름을 생성하는 데 도움이되는 매크로를 사용하는 것이 좋습니다. –

+0

@ GáborImre : 예, 소스 코드가 있습니다 –

답변

0

내가 감사 할 것

./scriptme --prefix=hw2 ~/src/ ~/dest/ 

을, 또는 일종의. 어느 날 누군가를 도왔 으면 좋겠어요.

#!/bin/sh 

DIR_BIN=bin/ext/lwIP/ 
DIR_SRC=src/ext/lwIP/ 
DIR_DST=src/hw2_lwIP/ 
CMD_NM=mb-nm 

[ -d $DIR_DST ] || (echo "Destination directory does not exist!" && exit 1); 
cp -r $DIR_SRC/* $DIR_DST/ 
chmod -R 755 $DIR_DST # cygwin issue with Windows7 
sync     # file permissions. (Pure MS shit!) 

funs=`find $DIR_BIN -name *.o | xargs $CMD_NM | grep " R \| T " | awk '{print $3}'` 
echo "Found $(echo $funs | wc -w) functions, processing:" 
for fun in $funs; 
do 
    echo " $fun"; 
    find $DIR_DST -type f -exec sed -i "s/$fun/hw2_$fun/g" {} \; 
done; 

echo "Done! Now change includes and compile your project ;-)"