快乐虾
http://blog.youkuaiyun.com/lights_joy/
lights@hb165.com
本文适用于
ADI Blackfin系列DSP
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);
……………………………………
}
经过这样处理后,就可以在codeblocks的IDE中对单个文件进行编译了,当然,仅仅是对单个文件进行编译,至于链接还得进一步处理。
参考资料
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-gcc中cc1.exe的生成( 2008-8-22 )
bfin-xxx-gcc中cc1plus.exe的生成( 2008-08-23 )
bfin-xxx-gcc中fortran目标的生成( 2008-8-24 )
bfin-xxx-gcc中java目标的生成( 2008-8-24 )
bfin-xxx-gcc中objc目标的生成( 2008-8-26 )
bfin-xxx-gcc中collect2目标的生成( 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 )