IT한 것/Mobile (iOS, AOS)

duplicate symbol 찾기 스트립트

lovian 2021. 3. 17. 09:54

iOS 개발을 하다보면, 외부 라이브러리를 사용하면서 종종 기호 충돌을 겪기 마련이다.

뭐 한두개 정도는 그냥 슥슥 이름 바꾸거나 빼면 되지만, 그 목록이 많은 경우에는 참 곤란해진다.

그래서 귀찮아서 아카이브 파일을 분석해서 비교하는 스크립트를 간단 개발해봤다.

#!/bin/bash
MODULE="find_dup.sh"
DATE="20180213"
FILEA=$1
FILEB=$1

if [ ! $# -ge 2 ]; then
echo "> This script($MODULE) find duplicated symbols between archive files."
echo "> Usage:" echo "$MODULE archive_file1 archive_file2"
echo " It has no options."
exit 1
fi
if [ ! -f $FILEA ]; then
echo "file($FILEA) is not exist"
exit -1
fi
if [ ! -f $FILEB ]; then
echo "file($FILEB) is not exist"
exit -2
fi

NM="nm -just-symbol-name -defined-only"
${NM} $1 | grep -v '^$' | grep -v '\.a' > a
${NM} $2 | grep -v '^$' | grep -v '\.a' > b
grep -x -f b a

rm -f a b

입력 파라메터로 두개의 아카이브 경로를 주고 화면에 출력되는 내용을 찾아서 고치면 되겠다.

※shared object도 nm 명령이 분석해주니 별 무리없이 사용할 수 있을 것이다.
※ osx의 전용 옵션이 있으므로 다른 플랫폼에서는 옵션 조절이 필요할 것이다.
※ grep으로 빈 줄과 *.a *.o 파일에 대한 정보를 필터링하고 있음.