标签: linker-errors

在linux上链接时出现"不可代表的输出部分"错误

在我的Ubuntu 9.04盒子上编译webkit-1.1.5包时,我在链接器阶段得到了这个错误:

libtool: link: gcc -ansi -fno-strict-aliasing -O2 -Wall -W -Wcast-align -Wchar-subscripts -Wreturn-type -Wformat -Wformat-security -Wno-format-y2k -Wundef -Wmissing-format-attribute -Wpointer-arith -Wwrite-strings -Wno-unused-parameter -Wno-parentheses -fno-exceptions -fvisibility=hidden -D_REENTRANT -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/directfb -I/usr/include/libpng12 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -g -O2 -O2 -o Programs/.libs/GtkLauncher WebKitTools/GtkLauncher/Programs_GtkLauncher-main.o -pthread  ./.libs/libwebkit-1.0.so /usr/lib/libgtk-x11-2.0.so /usr/lib/libgdk-x11-2.0.so /usr/lib/libatk-1.0.so /usr/lib/libpangoft2-1.0.so /usr/lib/libgdk_pixbuf-2.0.so -lm /usr/lib/libpangocairo-1.0.so /usr/lib/libgio-2.0.so /usr/lib/libcairo.so /usr/lib/libpango-1.0.so /usr/lib/libfreetype.so -lfontconfig /usr/lib/libgmodule-2.0.so /usr/lib/libgobject-2.0.so /usr/lib/libgthread-2.0.so -lrt /usr/lib/libglib-2.0.so -pthread
make[1]: Leaving directory `/home/nagul/build_area/webkit-1.1.5'
WebKitTools/DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp: In function ‘NPError webkit_test_plugin_get_value(NPP_t*, NPPVariable, void*)’:
WebKitTools/DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp:221: warning: deprecated …
Run Code Online (Sandbox Code Playgroud)

c++ linux linker-errors

10
推荐指数
3
解决办法
2万
查看次数

Mac OS X上的弱符号链接

目前我在使用Xcode 4.0.2的Mac OS X 10.6.7上遇到了弱链接问题.

robin@chameleon:/tmp/o$ gcc --version
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)
Run Code Online (Sandbox Code Playgroud)

正如文档http://developer.apple.com/library/mac/#technotes/tn2064/_index.html所说,我们可以使用gcc 属性((weak_import))作为弱链接符号.但是,以下示例代码始终抛出编译错误.如下:

weak.c:

#include <stdlib.h>
#include <stdio.h>

extern int SayHello() __attribute__((weak));

int main()
{
    int result;

    if (SayHello!=NULL)
    {
        printf("SayHello is present!\n");
        result=SayHello();
    }
    else
        printf("SayHello is not present!\n");
}
Run Code Online (Sandbox Code Playgroud)

错误消息如下:

robin@chameleon:/tmp/o$ gcc weak.c 
Undefined symbols for architecture x86_64:
  "_f", referenced from:
      _main in cceOf2wN.o
     (maybe you meant: __dyld_func_lookup)
ld: symbol(s) not found for architecture x86_64
collect2: ld returned …
Run Code Online (Sandbox Code Playgroud)

macos linker linker-errors weak

10
推荐指数
1
解决办法
4110
查看次数

Xcode - 替换类文件后链接错误_OBJC_CLASS _ $ _"className"

介绍

在我正在进行的当前项目中,我们正在使用ChartBoost SDK进行popop商业广告.我们一直在使用这个SDK一段时间没有任何问题.它是一个非常简单的库,基本上只有一个名为"ChartBoost.h"的头文件以及一个"libChartBoost.a"文件.

现在我们刚刚用新版本更新了SDK文件.我在这里做的只是通过"Move To Trash"从项目中删除旧的SDK文件.我之后做的只是将新的SDK文件移动到项目中,添加它们的引用.

问题

在完成此操作并编译项目后,我突然遇到2个链接错误.这是它的截图:

截图

我已经尝试了几乎所有我能想到的尝试去除错误.我已经清理了项目和项目文件夹,并且我还试图通过组织者窗口删除项目的派生数据.

我很确定这与链接器试图使用旧文件的引用有关吗?但我不知道如何才能删除那些现在无效的引用.

这里有没有人知道如何解决这个问题?

[编辑]将ChartBoost.a链接到二进制文件

所以我尝试通过"Build Phases"选项卡将ChartBoost.a文件链接到二进制文件.这确实摆脱了两个原始错误,但显示了8个新错误,如下面的屏幕截图所示:

链接错误2

我不太清楚遗憾的是这些链接错误是什么意思:(任何人都有任何想法?

xcode linker objective-c linker-errors ios

10
推荐指数
1
解决办法
1万
查看次数

Cuda C - 链接器错误 - 未定义的引用

我很难编译一个只包含两个文件的简单cuda程序.

main.c看起来像这样:

#include "my_cuda.h"

int main(int argc, char** argv){
   dummy_gpu();
}
Run Code Online (Sandbox Code Playgroud)

cuda.h看起来像这样:

#ifndef MY_DUMMY
#define MY_DUMMY

void dummy_gpu();

#endif
Run Code Online (Sandbox Code Playgroud)

并且my_cuda.cu文件像这样松散:

#include <cuda_runtime.h>
#include "my_cuda.h"

__global__ void dummy_gpu_kernel(){
   //do something
}

void dummy_gpu(){
   dummy_gpu_kernel<<<128,128>>>();
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我编译我总是收到以下错误:

gcc  -I/usr/local/cuda/5.0.35/include/ -c main.c
nvcc  -c my_cuda.cu
gcc  -L/usr/local_rwth/sw/cuda/5.0.35/lib64 -lcuda -lcudart -o md.exe main.o my_cuda.o 
main.o: In function `main':
main.c:(.text+0x15): undefined reference to `dummy_gpu'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

c cuda linker-errors

10
推荐指数
2
解决办法
1万
查看次数

如何指定要链接到哪个版本的boost库?

我正在尝试将VS2012中编写的项目迁移到VS2013.

我成功编译了boost 1.53.0(我首先尝试了1.54.0,但得到了一些编译器错误)并得到了类似的库 libboost_filesystem-vc120-mt-1_53.lib.

但是在尝试构建我的项目时,链接器抱怨:

error LNK1104: cannot open file 'libboost_filesystem-vc110-mt-1_53.lib'
Run Code Online (Sandbox Code Playgroud)

我一直在寻找一些项目设置在我的整个解决方案中找出,为什么它试图加载旧的库版本,但我没有找到任何东西.

链接器如何知道要使用哪个库?我该如何解决我的问题?

c++ boost linker-errors visual-studio-2013

10
推荐指数
1
解决办法
6224
查看次数

Xcode"找不到选项-L的目录"错误

我收到这些错误:

ld: warning: directory not found for option '-L"/pathToMyApp/MyApp/Shared/Libraries/ADMS_AppLibrary"'
ld: warning: directory not found for option '-L"/pathToMyApp/MyApp/Shared/Libraries/TestFlightSDK1.1"'
ld: warning: directory not found for option '-L"/pathToMyApp/MyApp/Shared/Libraries/Medialets"'
ld: library not found for -lTestFlight
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

事实上,这些目录确实存在于上面的路径中.

问题是,该应用程序用于编译罚款.我所做的就是在项目中添加一个新版本的Medialets库,现在我得到了这些错误.

xcode compiler-errors linker-errors

10
推荐指数
3
解决办法
2万
查看次数

检测到'_ITERATOR_DEBUG_LEVEL'不匹配:值'0'与值'2'不匹配

使用VS2010构建,我正在构建一个导致许多链接错误的库:

error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2'
Run Code Online (Sandbox Code Playgroud)

导致我必须同时发布我的lib的发行版和调试版.我没有理由发布lib的调试版本,它只是膨胀二进制发行版.但是内置调试的客户端代码拒绝链接我的发布库.

我之前看到过这个问题,但他们似乎并未提出正确的问题.我理解这个错误是什么,为什么我得到它(好吧,有点;我不确定是什么发出依赖.你呢?),但我想知道的是如何消除这种依赖性的发生在我的lib?

类似于在使用冲突的CRT时抱怨的libs,可以使用/ Zl(从目标文件中省略默认库名)来防止,当然有一种方法可以防止这种依赖性也被发送到我的libs中吗?

我只想生成一个优化的lib,它能够链接到调试或发布代码.客户端代码调试lib并不重要.几乎没有第三方库提供不同的调试和发布版本.供应商如何避免这个问题呢?

有没有人知道究竟是什么原因导致这种链接依赖,以及如何完全禁用它,或将其从我的代码中分解出来?

c++ linker-errors visual-c++-2010

10
推荐指数
1
解决办法
2万
查看次数

未定义的引用`strlwr'

我的代码就像一个文本压缩器,读取普通文本并变成数字,每个单词都有一个数字.它在DevC++中编译但不会结束,但是它不能在Ubuntu 13.10中编译.我收到的错误就像Ubuntu中的标题"未定义引用`strlwr'",我的代码有点长,所以我无法在这里发布,但其中一个错误来自:

//operatinal funcitons here


int main()
{

    int i = 0, select;

    char filename[50], textword[40], find[20], insert[20], delete[20];

    FILE *fp, *fp2, *fp3;

    printf("Enter the file name: ");

    fflush(stdout);

    scanf("%s", filename);

    fp = fopen(filename, "r");

    fp2 = fopen("yazi.txt", "w+");

    while (fp == NULL)
    {

        printf("Wrong file name, please enter file name again: ");

        fflush(stdout);

        scanf("%s", filename);

        fp = fopen(filename, "r");

    }

    while (!feof(fp))

    {

         while(fscanf(fp, "%s", textword) == 1)

        {

            strlwr(textword);

            while (!ispunct(textword[i]))
            i++;

            if (ispunct(textword[i]))

            {

                i = 0; …
Run Code Online (Sandbox Code Playgroud)

c string linker-errors

10
推荐指数
1
解决办法
2万
查看次数

在Windows x64下使用带有MinGW的GNU Scientific Library(GSL)

我在Microsoft Windows(64位),内部目录C:\MinGW(MSYS目录是C:\MinGW\msys\1.0)上安装了MinGW和MSYS .我从官方ftp下载了最新的GNU Scientific Library(GNU GSL)软件包.

我已经使用MSYS执行configuremake成功执行INSTALLGSL包中的文件.这意味着,在MSYS命令行界面的MSYS home目录中,我插入了:

$ ./configure
$ make
$ make install
Run Code Online (Sandbox Code Playgroud)

这产生了local在MSYS目录(目录下C:\MinGW\msys\1.0),包括目录bin,include,lib,和share.

我已经成功地编译的示例程序(其计算为$贝塞尔函数$ J_0(x)的$ x值= $ 5)根据在所述指令GSL手册,由

$ gcc -Wall -I/usr/local/include -c example.c
Run Code Online (Sandbox Code Playgroud)

这会产生一个目标文件example.o,如预期的那样,没有任何错误消息.

目标文件被链接,根据指令通过

$ gcc -L/usr/local/lib example.o -lgsl -lgslcblas -lm
Run Code Online (Sandbox Code Playgroud)

这将生成一个a.exe可在MSYS环境中执行的可执行文件.但是,在Windows命令行界面中cmd.exe,尝试运行可执行文件会出现以下错误消息:

程序无法启动,因为您的计算机缺少libgsl-0.dll.尝试重新安装该程序以解决此问题.

我想知道遗失了什么?应该怎么做才能生成可执行文件?

windows mingw linker-errors gsl

10
推荐指数
2
解决办法
1万
查看次数

架构的重复符号x86_64从CocoaPods添加pod时

我正在尝试将Google Analytics用于我的应用.

但是在通过CocoaPod添加后立即出现此错误:

在此输入图像描述

以前我的pod中有GoogleMaps和GCM.

现在我的Pod看起来像这样:

platform :ios, '8.0'

pod 'Google/Analytics'
pod 'Google/CloudMessaging'
pod 'GoogleMaps'
Run Code Online (Sandbox Code Playgroud)

我该如何解决此错误:

*编辑

这解决了我的问题:

如果我运行现有项目,X-Code 7那么我没有得到错误.

但我想让它运行Xcode 6.4所以我添加旧版本,GA并且可以正常运行X-Code 6.4.

我已经手动添加了较旧sdk但是如果有人想要添加它通过Cocoa-Pod那么这是这样做的方式:

  pod 'Google/Analytics'
  pod 'GoogleAnalytics', '3.13.0'
Run Code Online (Sandbox Code Playgroud)

google-analytics objective-c linker-errors ios xcode6

10
推荐指数
1
解决办法
3393
查看次数