Linux 軟體組裝工和他的工具們 - Wen Liao

tags: COSCUP2020 入門 TR313

Slides

Demo codes

prepare


mkdir ~/demo
cd ~/demo
git clone https://github.com/pcman-bbs/pcmanx
git clone https://github.com/zzz0072/rtenv-1

vim

gvim pcmanx/src/core/termdata.cpp
  • Demo last slide

  • Vertical visual mode

    • Insert
  • ?iw

  • gvim Python_Exercises/03_IO/io.py

Trace code

cd demo/rtenv-1
grep "status =" * -rn
ack "status ="
  • log
make clean
make
make 2>&1 | tee log
cat log | less
script
make clean
make
exit
less typescript
  • others
terminator # split/new tab
tig
mc
  • apt-file
apt-file search png.h
apt-file search png.h |grep \/png\\.h$
  • meld
vim a # edit
cp a b
vim b # edit
meld a b
  • cscope
# cat ~/bin/upc.sh
# upc.sh

find -type f \( -name *.c -o -name *.h -o -name *.cpp -o -name *.java -o *.S -o *.s -o hpp \) > cscope.file
cscope -b -q -k -i cscope.file

gvim src/file.c
# cs find c/e
# ctrl+]/t
  • Doxygen
cd ~/demo/pcmanx/
doxywizard &
firefox html/index.html &

shell

loop

rm -rf ~/demo/test/test
cd ~/demo
mkdir -p test/test
cd test/test
touch a.c
i=0 ; while [ $i -lt 10 ] ; do cp a.c $(basename a.c .c)${i}.c ; i=$((i+1)); done
ls

find file

cd ~/demo
find |grep \\.h$

action for each file

cd test/test
for i in $(ls); do echo ls -al $i ; done
for i in $(ls); do ls -al $i ; done
for i in $(ls); do mv $i ${i}.bak ; done

find + exec

cd ~/demo/rtenv-1
find -name "*.h" -exec grep ETH_DMASR_RBUS {} \; -print

binutil

demo 1

cd /usr/lib/x86_64-linux-gnu
find | grep \\.a$ | xargs nm -A 2>/dev/null |grep "snprintf$"  | grep T

ld --verbose | grep SEARCH | tr "; " "\n\r"

echo "" | gcc -E -xc - -dM -v

echo "int main(){}" > a.c

save temp

rm -rf ~/demo/test/test
cd ~/demo
mkdir -p test/test
cd test/test
gcc --save-temps a.c
ls
cat a.i
cat a.s
file a.o
nm a.out

rest

strace -f ls 2>&1 |grep write
strace -f -s 256 ls 2>&1 |grep write

LD_DEBUG=all ls
Select a repo