通过向所有c库函数添加前缀来复制SRC目录

时间:2014-11-10 14:11:11

标签: c preprocessor static-libraries prefix

我有一个与硬件外围设备通信的嵌入式C静态库。它目前不支持多个硬件外围设备,但我需要连接到第二个。我不关心代码足迹。所以我想复制那个库;每个硬件一个。

这当然会导致符号冲突。一个好方法是使用objcopy为目标文件添加前缀。所以我可以得到hw1_fun1.o和hw2_fun1.o。这个post说明了这一点。

我想为源级别的所有c函数添加前缀,而不是对象。因为我需要为hw2稍微修改一下。

是否有任何脚本,c-preprocessor,工具可以做类似的东西:

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

我将不胜感激:)

1 个答案:

答案 0 :(得分:0)

我编写了一个简单的bash脚本,它可以执行所需的功能。我希望有一天能帮助别人。

#!/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 ;-)"