`
vaqeteart
  • 浏览: 304063 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

解决“C compiler cannot create executables”的错误

    博客分类:
  • tmp
阅读更多
感觉不错的解决方法,还没有尝试过,先转载下来了。

解决“C compiler cannot create executables”的错误
Posted on 2006-09-25 by hilyjiang

作者:Hily 原始链接:http://hily.me/blog/2006/09/minigui-compile-error/
版权声明:可以转载,转载时务必以超链接形式标明文章原始出处和作者信息及版权声明

miniGUI 1.3.3中“Development environment options”的配置如下:

  │ │  (uClinux) Platform                                           │ │
  │ │  (arm-elf-gcc) Compiler                                       │ │
  │ │  (uClibc) Libc                                                │ │
  │ │  --- Compilation and installation options                     │ │
  │ │       uClinux dist directory: "/opt/uClinux/uClinux-dist"     │ │
  │ │  [ ] Choose different uClibc directory                        │ │
  │ │  --- Installation options                                     │ │
  │ │       Path prefix: "/usr/local"                               │ │
  │ │  --- Additonal Compiler Flags                                 │ │
  │ │       CFLAGS: ""                                              │ │
  │ │       LDFLAGS: ""                                             │ │

配置完后,保存配置时出错:

Saving your MiniGUI configuration...
install prefix = /usr/local
compiler = arm-elf-gcc
target = arm-elf-linux
host = arm-elf-linux
CFLAGS = -Os -D__uClinux__ -fno-builtin -I/home/work1/uClinux-dist-server/linux-2.4.x/include -I/home/work1/uClinux-dist-server/lib/uClibc/include -I/home/work1/uClinux-dist-server/lib/uClibc/include/../ -D__PIC__ -fpic -msingle-pic-base
LDFLAGS = -Wl,-elf2flt -Wl,-move-rodata -L/home/work1/uClinux-dist-server/lib/uClibc/lib -L/home/work1/uClinux-dist-server/lib/uClibc/lib/../ -lc
checking build system type... i386-pc-linux-gnu
checking host system type... arm-elf-linux-gnu
checking target system type... arm-elf-linux-gnu
checking for arm-elf-linux-gcc... arm-elf-gcc
checking for C compiler default output... configure: error: C compiler cannot create executables
See `config.log' for more details.

*** End of MiniGUI configuration.
*** Next, you must run 'make'.

花了大半天查错,终于找到答案。

查看config.log出错的地方为:

     95 configure:2069: checking for C compiler default output
     96 configure:2072: arm-elf-gcc    conftest.c  >&5
     97 /usr/local/lib/gcc-lib/arm-elf/2.95.3/libgcc.a(__main.o)(.text+0xc4): In function `__do_global_ctors':
     98 : undefined reference to `__CTOR_LIST__'
     99 /usr/local/lib/gcc-lib/arm-elf/2.95.3/libgcc.a(__main.o)(.data+0x0): undefined reference to `__DTOR_LIST__'
    100 collect2: ld returned 1 exit status
    101 configure:2075: $? = 1

看到96行arm-elf-gcc的编译选项居然为空,不解。。
查看configure中2072行附近:

echo "$as_me:$LINENO: checking for C compiler default output" >&5
echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6
ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5
  (eval $ac_link_default) 2>&5
  ac_status=$?
  echo "$as_me:$LINENO: \$? = $ac_status" >&5
  (exit $ac_status); }; then

其中ac_link在1716行定义:

ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'

奇怪的是CFLAGS居然是空的,在保留配置时明明看到有给CFLAGS赋值:

CFLAGS = -Os -D__uClinux__ -fno-builtin -I/home/work1/uClinux-dist-server/linux-2.4.x/include -I/home/work1/uClinux-dist-server/lib/uClibc/include -I/home/work1/uClinux-dist-server/lib/uClibc/include/../ -D__PIC__ -fpic -msingle-pic-base

看看到底是怎么保存的,scripts/Menuconfig中:

   1412 #
   1413 # Confirm and Save
   1414 #
   1415 if $DIALOG --backtitle "$backtitle" \
   1416            --yesno "Do you wish to save your new MiniGUI configuration?" 5 60
   1417 then
   1418         save_configuration
   1419         scripts/mkconfig
   1420         ./config-mnu
   1421         #rm config-mnu

保存时运行了scripts/mkconfig和./config-mnu,config-mnu是在mkconfig中生成的。而. /configure是在config-mnu中运行的,但是在config-mnu中却没有CFLAGS的设置。检查config-mnu,当我看到这几行时,我真的又想杀人了:

    189     echo "CC=$CC \\" >> $CONFIG_MNU
    190     #echo "CFLAGS=\"$CFLAGS\" \\" >> $CONFIG_MNU
    191     #echo "LDFLAGS=\"$LDFLAGS\" \\" >> $CONFIG_MNU
    192     echo "./configure \\" >> $CONFIG_MNU

好好的,谁把它们注释掉了!
把注释的那两行恢复一下就通过了。

– EOF –
This entry was posted in 嵌入式. Bookmark the permalink.
分享到:
评论

相关推荐

    VclZip pro v3.10.1

    Ofcourse when using regular TStream decendants in D4,4,BCB4,and 5, you cannot create Zip64 archives. If you use Delphi 6, 7, or BCB 6, you don't have to worry about any of this as the normal TSTream ...

    tool.jar下载Unable to create schema compiler

    tool.jar下载Unable to create schema compiler需要加载tool.jar的同学们。

    CCS C Compiler

    ### CCS C Compiler 知识点解析 #### 一、CCS C Compiler 概述 CCS C Compiler 是一款专门用于编程 Microchip PIC 微控制器的编译器工具。这款工具支持从基本的编译功能到高级优化选项,适用于从初学者到专业开发者...

    MPLAB XC8 C Compiler

    总之,MPLAB XC8 C Compiler是一款功能强大、易于使用的C语言编译器,非常适合用于Microchip的8位PIC微控制器的应用开发。通过合理利用其高级特性,开发者可以显著提升程序性能,同时享受高效的开发体验。

    解决 错误使用 mcc Test checkout of feature 'Compiler' failed.

    解决matlab编译可执行文件过程中的错误,(应该是破解不完全) 错误使用 mcc Test checkout of feature 'Compiler' failed.

    ARM Compiler v5.01, Build 94 for Linux

    ARM Compiler v5.01, Build 94, is intended for use as an update...This update consists of an updated compiler, linker, assembler, fromelf, and armar program executables, include files and C/C++ libraries.

    Portable C compiler 源码

    标题 "Portable C compiler 源码" 指向的是一个可移植的C语言编译器的源代码,主要用于在Linux环境下使用GCC构建C/C++编译器。这个项目可能是为了提供一个轻量级的、易于部署的解决方案,使得开发者能够在不同的系统...

    v5编译器,解决keil5.38compiler报错

    针对"v5编译器,解决keil5.38compiler报错"这个主题,我们可以深入探讨如何识别和解决这些问题。 首先,Keil uVision是一款广泛应用于嵌入式开发的集成开发环境(IDE),它包含了C/C++编译器、链接器、模拟器和调试...

    C0Compiler类C语言解释程序

    C0Compiler是一个专门用于解析和执行C0语言的解释程序,C0是C语言的一个简化版本,常用于教学和理解编译原理。这个程序的主要功能是将C0语言的源代码转换为机器可执行的指令,而无需经过传统的编译和链接步骤。以下...

    Avocet_C_compiler_Motorla_68HC11_CCompiler_M68HC11_Avocet_Wideui

    总之,Avocet C Compiler结合Motorola 68HC11微控制器,为开发者提供了强大的工具链,使在8位系统上的C语言编程变得轻松高效。通过深入理解和充分利用这些工具,开发者能够在有限的硬件资源下,创造出功能丰富、性能...

    C compiler using yacc

    本文将深入探讨如何使用Yacc(Yet Another Compiler-Compiler)工具来构建一个C语言的编译器。 Yacc,全称为“另一个编译器的编译器”,是由美国贝尔实验室开发的一款语法分析器生成器。它根据词法分析器(如lex)...

    Hi-Tech picc c compiler v9.6 破解版

    Hi-tech picc c compiler v9.6 破解版

    Small device c compiler

    SDCC全称是“Small Device C Compiler”,它的主要目标是为8位、16位和32位的微控制器提供C语言的编译支持。这些微控制器通常用于嵌入式系统,其内存和处理能力有限,因此需要一个轻量级且高效的编译器来优化代码,...

    ARM compiler version 5

    在描述中提到的“missing compiler version 5的解决方法”,通常意味着用户在尝试使用或更新项目时遇到了找不到或无法识别ARM Compiler Version 5的情况。这可能由多种原因引起,如安装不完整、路径配置错误、软件...

    TCC(Tiny C Compiler)0.9.26源码 原版和VS工程版

    TCC(Tiny C Compiler)0.9.26源码 原版和VS工程版 VS版: 已经实现VS2008和VS2013 打开即用 可编译 可调试 建议使用VS2008编译

    TCC - Tiny C Compiler ( for linux )

    Tiny C Compiler(TCC) 是一个轻量级高速的C语言编译器。 TCC的编译速度十分快,以至于编译一些大型项目都不需要Makefile文件。 TCC支持ANSI C,大部分的 ISO99 C的新标准和许多GNU C扩展以及C语言和汇编语言混编。...

    Compiler Design In C

    《Compiler Design In C》是一本专注于讲解编译器设计的实验教程,主要使用C语言作为实现工具。编译器设计是计算机科学中的一个重要领域,它涉及将高级编程语言转换为机器可理解的低级指令的过程。这本书对于理解...

    TCC(Tiny C Compiler)编译器下载

    Tiny C Compiler(简称TCC)是一款轻量级的C语言编译器,由法国程序员Fabrice Bellard开发。它的特点是体积小巧,但编译和链接的速度极快,使其成为快速原型开发、嵌入式系统以及对编译速度有较高要求的项目的理想...

    CCS 4.104 (PIC C Compiler)

    《CCS 4.104 (PIC C Compiler)——高效微控制器编程的得力工具》 CCS 4.104是一款专为PIC微控制器设计的C编译器,是开发人员进行嵌入式系统开发的重要工具。它以其易用性、高效性和丰富的功能在嵌入式开发者中获得...

Global site tag (gtag.js) - Google Analytics