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

来源:互联网 发布:手机淘宝贷款怎么贷 编辑:程序博客网 时间:2024/04/29 22:01

 

快乐虾

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)

 

 

 

 

 

 

 

原创粉丝点击