2018년 6월 1일 금요일

Remove unused Multiwii source code (실행되지 않는 Multiwii 소스 코드 삭제하기)

1. Run arduino IDE
   아두이노IDE 실행


2. Modify build log setting
   빌드 로그 설정 변경


3. Get build command
   빌드 커맨드 추출


"/opt/arduino-1.8.5/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR   "-I/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino" "-I/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs" "/tmp/arduino_build_482423/sketch/Alarms.cpp" -o "/tmp/arduino_build_482423/sketch/Alarms.cpp.o"

"/opt/arduino-1.8.5/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR   "-I/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino" "-I/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs" "/tmp/arduino_build_482423/sketch/EEPROM.cpp" -o "/tmp/arduino_build_482423/sketch/EEPROM.cpp.o"

"/opt/arduino-1.8.5/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR   "-I/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino" "-I/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs" "/tmp/arduino_build_482423/sketch/GPS.cpp" -o "/tmp/arduino_build_482423/sketch/GPS.cpp.o"

"/opt/arduino-1.8.5/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR   "-I/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino" "-I/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs" "/tmp/arduino_build_482423/sketch/IMU.cpp" -o "/tmp/arduino_build_482423/sketch/IMU.cpp.o"

"/opt/arduino-1.8.5/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR   "-I/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino" "-I/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs" "/tmp/arduino_build_482423/sketch/LCD.cpp" -o "/tmp/arduino_build_482423/sketch/LCD.cpp.o"

"/opt/arduino-1.8.5/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR   "-I/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino" "-I/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs" "/tmp/arduino_build_482423/sketch/MultiWii.cpp" -o "/tmp/arduino_build_482423/sketch/MultiWii.cpp.o"

"/opt/arduino-1.8.5/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR   "-I/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino" "-I/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs" "/tmp/arduino_build_482423/sketch/MultiWii.ino.cpp" -o "/tmp/arduino_build_482423/sketch/MultiWii.ino.cpp.o"

"/opt/arduino-1.8.5/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR   "-I/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino" "-I/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs" "/tmp/arduino_build_482423/sketch/Output.cpp" -o "/tmp/arduino_build_482423/sketch/Output.cpp.o"

"/opt/arduino-1.8.5/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR   "-I/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino" "-I/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs" "/tmp/arduino_build_482423/sketch/Protocol.cpp" -o "/tmp/arduino_build_482423/sketch/Protocol.cpp.o"

"/opt/arduino-1.8.5/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR   "-I/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino" "-I/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs" "/tmp/arduino_build_482423/sketch/RX.cpp" -o "/tmp/arduino_build_482423/sketch/RX.cpp.o"

"/opt/arduino-1.8.5/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR   "-I/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino" "-I/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs" "/tmp/arduino_build_482423/sketch/Sensors.cpp" -o "/tmp/arduino_build_482423/sketch/Sensors.cpp.o"

"/opt/arduino-1.8.5/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR   "-I/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino" "-I/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs" "/tmp/arduino_build_482423/sketch/Serial.cpp" -o "/tmp/arduino_build_482423/sketch/Serial.cpp.o"

4. Modify build command
   빌드 커맨드 수정
Using build command above, we get source code which is just done preprocess.
획득한 아두이노 빌드 커맨드를 이용하여, 프리프로세서 과정만 거친 소스코드를 얻도록 한다.

"/opt/arduino-1.8.5/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR   "-I/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino" "-I/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs" "/tmp/arduino_build_482423/sketch/Alarms.cpp" -o "/tmp/arduino_build_482423/sketch/Alarms.cpp.o"

to

"/opt/arduino-1.8.5/hardware/tools/avr/bin/avr-g++" -E -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10805 -DARDUINO_AVR_PRO -DARDUINO_ARCH_AVR   "-I/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino" "-I/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs" "/tmp/arduino_build_482423/sketch/Alarms.cpp" -o "/tmp/arduino_build_482423/sketch/Alarms.cpp.E"

5. Get simple source code which is really used in drone
   런타임에 사용되는 소스코드만 얻기