如何在Mac和linux上从命令行编译和上传Arduino 草图 ? 我已经安装了Arduino编程环境。 有没有一些示例makefiles在任何地方?
如何添加和删除系统的环境variables“path”?
Mailx和Gmail的nssconfiguration目录
git:gitk有“按datesorting”的命令行选项吗?
消除子文件夹将所有文件移动到一个文件夹中
CMD哪个分区是活动的
在命令行上(在windows,Mac和linux上)编译和上传草图(与C / C ++源代码相同)直接通过标志支持arduino.exe的最新版本; 见: https : //github.com/arduino/Arduino/blob/master/build/shared/manpage.adoc
有一个名为Ino的命令行Arduino工具包。 它只是做到这一点。
这是我的样板GNU使包括AVR项目,你可能需要适应其中的一些,以适应你的环境。 它创建依赖关系,有大量的标准gcc选项,我觉得有用或优化的大小,以及我使用的库目录。 我成功地使用了这个编译arduino软件,我也曾经在arduino编辑器中黑掉了PdePreprocessor从命令行运行来生成所有的voodoo:
https://github.com/wesen/mIDIDuino/blob/master/app/src/processing/app/preproc/PdePreprocessor.java
# # generic AVR makefile # # (c) July 2011 - Manuel Odendahl - wesen@ruinwesen.com # # include this into your main Makefile,after having defined TARGET and TARGET_OBJs all: $(TARGET).hex CURDIR := $(dir $(lastword $(MAKEfile_List))) include $(CURDIR)MIDiCtrl.mk CC = avr-gcc CXX = avr-g++ OBJcopY = avr-objcopy AVR_ARCH ?= atmega64 LDAVR_ARCH ?= avrmega64 FLASH_PROTOCol = jtag2 CFLAGS += -Os -ffunction-sections -DAVR -I. -mmcu=$(AVR_ARCH) -mcall-prologues -fshort-enums -fpack-struct -Wall -Werror CFLAGS += -Wall -DliTTLE_ENDIAN -g -flto CFLAGS += no-tree-loop-optimize -ffreestanding -morder1 -funsigned-char -funsigned-bitfIElds -fshort-enums -fpack-struct CFLAGS += -fdata-sections -fno-split-wIDe-types -fno-inline-small-functions -mcall-prologues CLDFLAGS += -Wl,--relax,--gc-sections -ffunction-sections CLDFLAGS += -mmcu=$(AVR_ARCH) LDFLAGS = -m $(LDAVR_ARCH) -M # generate List # CFLAGS += -Wa,-adhlns=$@.lst %.o: %.cpp $(CXX) $(CXXFLAGS) -c $< -o $@ %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ %.o: %.s $(CC) $(CFLAGS) -c $< -o $@ %.s: %.c $(CC) -S $(CFLAGS) -fverbose-asm $< -o $@ %.o: %.S $(CC) $(CFLAGS) -c $< -o $@ %.syx: %.hex ihex2sysex $< $@ %.srec: %.elf $(OBJcopY) -j .text -j .data -O srec $< $@ %.hex: %.elf $(OBJcopY) -j .text -j .data -O ihex $< $@ %.ee_srec: %.elf $(OBJcopY) -j .eeprom --change-section-lma .eeprom=0 -O srec $< $@ AVR_BASE_DIR ?= $(abspath $(CURDIR)..) AVR_liB_DIR ?= $(AVR_BASE_DIR)/harDWare/librarIEs AVR_liBS += CommonTools MIDi AVR_liB_Dirs += $(foreach lib,$(AVR_liBS),$(AVR_liB_DIR)/$(lib)) AVR_INC_FLAGS += $(foreach dir,$(AVR_liB_Dirs),-I$(dir)) AVR_OBJs += $(foreach dir,$(foreach file,$(wildcard $(dir)/*.cpp),$(subst .cpp,.o,$(file)))) AVR_OBJs += $(foreach dir,$(filter-out $(AVR_HOST_EXCLUDE),$(wildcard $(dir)/*.c)),$(subst .c,$(file)))) AVR_DEPS += $(subst .o,.d,$(AVR_OBJs)) # AVR_HOST_EXCLUDE can be used to exclude specific files later on CXXFLAGS += $(AVR_INC_FLAGS) CFLAGS += $(AVR_INC_FLAGS) CXXFlags += -Werror -Wall CFLAGS += -Werror -Wall default: all %.d:%.c set -e; $(CC) -MM $(CFLAGS) $< | sed 's,($*).o[ :]*,1.o $@ :,g' > $@ ; [ -s $@ ] || rm -f $@ %.d:%.cpp set -e; $(CXX) -MM $(CXXFLAGS) $< | sed 's,g' > $@ ; [ -s $@ ] || rm -f $@ %.host.d:%.c set -e; $(CC) -MM $(CFLAGS) $< | sed 's,g' > $@ ; [ -s $@ ] || rm -f $@ %.host.d:%.cpp set -e; $(CXX) -MM $(CXXFLAGS) $< | sed 's,g' > $@ ; [ -s $@ ] || rm -f $@ printlibs: echo $(AVR_liBS) $(TARGET).elf: $(TARGET).o $(TARGET_OBJs) $(AVR_OBJs) $(CXX) $(CLDFLAGS) -g -o $@ $^ _clean: - rm *.elf *.hex *.o .mIDictrl.flags libclean: rm -rf $(TARGET_OBJs) $(OBJs) # concrete settings for development environment Uname=$(shell uname) ISWIN=$(findstring CYGWIN,$(Uname)) ISMAC=$(findstring Darwin,$(Uname)) CC = avr-gcc CXX = avr-g++ OBJcopY = avr-objcopy AVR_ARCH = atmega64 F_cpu = 16000000L CORE = minicommand2
你需要从你的arduino草图中创建一个可行的cpp文件。 Arduino环境自动为你做。 获取这些文件的一个诀窍就是打开你的arduino的preferences.txt文件(它位于Mac上的〜/ library / Arduino中,我认为在你的documents and Settings或Application Data中,不记得),并设置构建.verbose = true和upload.verbose = true。 启动arduino,编译你的草图(不要上传)。 底部的控制台将显示哪些文件被编译。 现在你可以进入该目录,该目录将包含cpp文件,并为所有核心arduino对象编译目标文件。 您可以将这些文件复制到您的项目中,并使用cpp文件进行进一步黑客入侵。 让我知道如果你需要更多关于Makefile的信息,我可以为你提供我所拥有的。
你可以使用基于CMake的biicode (这是一个我正在工作的项目)(但实际上你并不需要编写任何cmake文件),也是一个管理Arduino库的工具
它的主要特点是:
依赖解决方案,像maven那样传递,但没有配置文件:直接从源代码读取依赖关系。
中央存储库,任何人都可以上传他们的库 他们可以在网络中探索,浏览和发现
版本控制:它检查版本的兼容性,并允许依赖的安全更新
你可以使用任何文本编辑器(它有可选的eclipse集成 )
它管理项目设置和编译,闪烁生成固件的董事会
您可以在这里看到一个快速演示,并阅读文档中的更多内容 。
如果你可以使用cmake,那么在同一个网页上有一些链接(例如这个和这个 )。 GNU makefile与cmake有点不同,但没有什么复杂的。 只需要Google,你可以找到很多关于如何编译AVR代码的Makefile示例。
实际上,您可以使用arduino GUI进行编译和上传,并在首选项中将编辑器设置为外部。 这样,你就可以从xcode编辑C ++(PDE)文件,并且让arduino生成实际的CPP并构建整个shebang。
你也可以使用XCode为arduino编写简单的C ++ / C,使用avr-gcc编译器。
看看: https : //stackoverflow.com/a/8192762/153835
然后你可以使用普通的avrdude上传工具来编程arduino。 看看: http : //www.ladyada.net/library/arduino/bootloader.HTML
过去,Arduino所说的协议是对STK500协议的修改,只有与arduino捆绑在一起的avrdude才能说出来。 我不知道主流avrdude是否升级,或者你是否还需要使用Arduino文件夹中的avrdude。
我有一个Arduino的makefile ,可以用来编译和上传Arduino(或简单的AVR C)程序到Arduino。
以下是这个makefile的一些重要特性
支持通过Arduino作为ISP或任何程序员上传
支持编译AVR C程序
支持用户以及系统库。
生成汇编和符号文件
使用备用Arduino内核的程序(如ATtiny或Arduino备用内核)
如果你不坚持make也有scons / sconstruct scons / sconstruct 。 由于这基本上是用Python编写的,所以比调整要简单得多。 另外它可以用任何Python调试器进行调试。
总结以上是内存溢出为你收集整理的命令行Arduino编译和下载?全部内容,希望文章能够帮你解决命令行Arduino编译和下载?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)