DSP

打造windows下的嵌入式开发工具(8):让codeblocks调用bfin交叉编译

2019-07-13 14:47发布

  快乐虾 http://blog.csdn.net/lights_joy/ lights@hb165.com     本文适用于 ADI Blackfin系列DSP 优视科技BV561EVB开发板 gcc-4.3.1 binutils-2.18 codeblocks-8.02 Skyeye-1.2.5 bfin-uclinux-2008r1-rc8 Cygwin gcc 3.4.4 Visual studio 2005 Visual DSP++ 5.0   欢迎转载,但请保留作者信息   Codeblocks支持许多不同的编译器,这种支持是由compilerGCC这个plugin来完成的。我们所需要做的就是在这个plugin中添加对bfin-uclinux-gcc的支持。在此之前,首先将已经生成的交叉编译程序都放在codeblocks/arch/bfin/compiler/uclinux/bin目录下。 compilergcc这个plugin中,整个框架由CompilerGCC这个类来完成,然后为每个不同的编译器定义了不同的类,我们找一个最相近的类进行修改,比如CompilerGNUARM这个类,直接把它复制为CompilerBfinUclinux class CompilerBfinUclinux : public Compiler {     public:         CompilerBfinUclinux();         virtual ~CompilerBfinUclinux();         virtual void Reset();         virtual void LoadDefaultRegExArray();         virtual AutoDetectResult AutoDetectInstallationDir();     protected:         virtual Compiler* CreateCopy();     private: }; 够简单了吧! 接下来在构造函数里面要指定这个编译器的名称: CompilerBfinUclinux::CompilerBfinUclinux()     : Compiler(_("GNU BFIN UCLINUX GCC Compiler"),_T("bfin-uclinux-gcc")) {     Reset(); } 接下来指定编译程序的名称: void CompilerBfinUclinux::Reset() {     if (platform::windows)     {         m_Programs.C = _T("xgcc.exe");         m_Programs.CPP = _T("xgcc.exe");         m_Programs.LD = _T("ld.exe");         m_Programs.DBG = _T("gdb.exe");         m_Programs.LIB = _T("ar.exe");         m_Programs.WINDRES = _T("");         m_Programs.MAKE = _T("make.exe");     } ……………………………………….. } // end of Reset 下一步指定编译器所在的路径: AutoDetectResult CompilerBfinUclinux::AutoDetectInstallationDir() {     wxString sep = wxFileName::GetPathSeparator();     if (platform::windows)     {         m_MasterPath = wxGetCWD() + "/arch/bfin/compiler/uclinux/";     }     else         m_MasterPath = _T("/usr");       AutoDetectResult ret = wxFileExists(m_MasterPath + bin/ m_Programs.C) ? adrDetected : adrGuessed;     return ret; } // end of AutoDetectInstallationDir 最后在CompilerGCC里面注册这个编译器: void CompilerGCC::OnAttach() { …………………………………..     CompilerFactory::RegisterCompiler(new CompilerBfinUclinux); …………………………………… } 经过这样处理后,就可以在codeblocksIDE中对单个文件进行编译了,当然,仅仅是对单个文件进行编译,至于链接还得进一步处理。      

参考资料

host-i686-pc-cygwin/libiberty/Makefile解析(2008-8-19) host-i686-pc-cygwin/fixincludes/Makefile分析(2008-8-19) host-i686-pc-cygwin/zlib/Makefile分析(2008-8-19) host-i686-pc-cygwin/libcpp/Makefile分析(2008-8-19) host-i686-pc-cygwin/libdecnumber/Makefile分析(2008-8-19) bfin-xxx-gcccc1.exe的生成(2008-8-22) bfin-xxx-gcccc1plus.exe的生成2008-08-23 bfin-xxx-gccfortran目标的生(2008-8-24) bfin-xxx-gccjava目标的生成(2008-8-24) bfin-xxx-gccobjc目标的生成(2008-8-26) bfin-xxx-gcccollect2目标的生成(2008-8-26) 打造windows下的嵌入式开发工具(1):目标(2008-9-3) 打造windows下的嵌入式开发工具(2)binutils-2.18(2008-9-3) 打造windows下的嵌入式开发工具(3)gmp-4.2.3(2008-9-3) 打造windows下的嵌入式开发工具(4)mpfr-2.3.1(2008-9-4) 打造windows下的嵌入式开发工具(5)gcc-4.3.1(2008-9-4) 打造windows下的嵌入式开发工具(6)wxWidgets-2.8.8(2008-9-4) 打造windows下的嵌入式开发工具(7)codeblocks-8.02(2008-9-8)