代码人生的小狗窝

一行行枯燥的代码,却描绘出人生的点点滴滴

您现在的位置是:首页>_AIX

aix6.1 gcc编译时的一个警告解决方法

发布时间:2019-11-21浏览(1431)

    aix6.1 gcc编译时的一个警告
    "ld: 0711-224 WARNING: Duplicate symbol"


    ------解决方案--------------------
    警告没关系的
    ------解决方案--------------------
    6.1 的 ld 确实会由这种警告,建议查一下代码。
    多半是在.h文件里定义变量引起的

    $ cat foo.h foo.c main.c
    /**
     * @file        foo.h
     * @brief       
     */
    int foo = 1;


    /**
     * @file        foo.c
     * @brief       
     */
    #include "foo.h"


    /**
     * @file        main.c
     * @brief       
     */
    #include <stdio.h>

    #include "foo.h"

    int main(int argc, char *argv[])
    {
            printf("%d\n", foo);

            return 0;
    }
    $ xlc -o foo foo.c main.c
    foo.c:
    main.c:
    ld: 0711-224 WARNING: Duplicate symbol: foo
    ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
    $ cat foo.h foo.c main.c 
    /**
     * @file        foo.h
     * @brief       
     */
    extern int foo;


    /**
     * @file        foo.c
     * @brief       
     */
    #include "foo.h"

    int foo = 1;


    /**
     * @file        main.c
     * @brief       
     */
    #include <stdio.h>

    #include "foo.h"

    int main(int argc, char *argv[])
    {
            printf("%d\n", foo);

            return 0;
    }
    $ xlc -o foo foo.c main.c
    foo.c:
    main.c: