在我的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) 目前我在使用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) 介绍
在我正在进行的当前项目中,我们正在使用ChartBoost SDK进行popop商业广告.我们一直在使用这个SDK一段时间没有任何问题.它是一个非常简单的库,基本上只有一个名为"ChartBoost.h"的头文件以及一个"libChartBoost.a"文件.
现在我们刚刚用新版本更新了SDK文件.我在这里做的只是通过"Move To Trash"从项目中删除旧的SDK文件.我之后做的只是将新的SDK文件移动到项目中,添加它们的引用.
问题
在完成此操作并编译项目后,我突然遇到2个链接错误.这是它的截图:
我已经尝试了几乎所有我能想到的尝试去除错误.我已经清理了项目和项目文件夹,并且我还试图通过组织者窗口删除项目的派生数据.
我很确定这与链接器试图使用旧文件的引用有关吗?但我不知道如何才能删除那些现在无效的引用.
这里有没有人知道如何解决这个问题?
[编辑]将ChartBoost.a链接到二进制文件
所以我尝试通过"Build Phases"选项卡将ChartBoost.a文件链接到二进制文件.这确实摆脱了两个原始错误,但显示了8个新错误,如下面的屏幕截图所示:
我不太清楚遗憾的是这些链接错误是什么意思:(任何人都有任何想法?
我很难编译一个只包含两个文件的简单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)
谢谢您的帮助.
我正在尝试将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)
我一直在寻找一些项目设置在我的整个解决方案中找出,为什么它试图加载旧的库版本,但我没有找到任何东西.
链接器如何知道要使用哪个库?我该如何解决我的问题?
我收到这些错误:
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库,现在我得到了这些错误.
使用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并不重要.几乎没有第三方库提供不同的调试和发布版本.供应商如何避免这个问题呢?
有没有人知道究竟是什么原因导致这种链接依赖,以及如何完全禁用它,或将其从我的代码中分解出来?
我的代码就像一个文本压缩器,读取普通文本并变成数字,每个单词都有一个数字.它在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) 我在Microsoft Windows(64位),内部目录C:\MinGW(MSYS目录是C:\MinGW\msys\1.0)上安装了MinGW和MSYS .我从官方ftp下载了最新的GNU Scientific Library(GNU GSL)软件包.
我已经使用MSYS执行configure并make成功执行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.尝试重新安装该程序以解决此问题.
我想知道遗失了什么?应该怎么做才能生成可执行文件?
我正在尝试将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)