Articles of 链接

将程序链接到Eclipse中的C ++项目? Linux的

我被赋予了链接程序的命令: g++ -o prog_name prog_name.cc -lsicklms-x -pthread 但是,我没有使用命令行,我正在使用eclipse。 我的项目被称为“testing”,我只有一个类“main.cpp”是这样的: /* * Test.cpp * * Created on: Dec 1, 2011 * Author: igvc */ #include <iostream> #include <sicklms-1.0/SickLMS.hh> using namespace std; using namespace SickToolbox; int main(int argc, char *argv[]) { /* Specify device path and baud */ string dev_path = "/dev/ttyUSB0"; sick_lms_baud_t lms_baud = SickLMS::SICK_BAUD_38400; /* […]

C交叉编译链接extern声明为静态?

我尝试从Debian交叉编译一些文件到一个arm-linux目标,遇到一些奇怪的行为(当然,我想它有一个解释),使用: $ arm-linux-gnueabi-gcc –version $ arm-linux-gnueabi-gcc (Debian 4.3.5-4) 4.3.5 编译时,我得到这些错误消息: dsblock1.c:167: error: non-static declaration of 'HaveEventIterated_' follows static declaration ss2dym.c:778: error: previous declaration of 'HaveEventIterated_' was here 相应的行是: ss2dym.c:778 : extern long HaveEventIterated_; "redeclaration" dsblock1.c:167: long HaveEventIterated_=0; 所以这里是我没有得到的东西:根据我认为我知道的,variables首先声明为extern,是非静态的。 但是:“外部”声明是在一个静态函数内。 所以我的猜测是,这是一种inheritance的行为?! 所以下面是问题: – 如果我的猜测是正确的,有人可以解释背景故事吗? – 是否有一个简单的方法来解决这个问题,例如,一个棘手的编译器标志,允许嵌套的范围转移或其他魔术? 我知道最有可能创build一个头文件,并把所有这些外部声明放到中立空间,但是我已经有了几百个这样的错误和几个文件。 我已经看到,使用MSVC ++(有其他的范围约束,我知道,但我有更多的问题,使用ARM-G + +)这个代码编译良好,所以必须有某种解决scheme,比只是重写所有这些部分… 顺便说一句:有一个简单的方法来改变所有这些“重新宣布”的范围,因为我有一个像所有人一样的macros观: MY_MACRO long HaveEventIterated_=0; 和atm我用-DMY_MACRO=编译 […]

联动失败,发生了什么事?

我试图在Ubuntu 12.04 64位上构build一个特定的程序。 该程序需要编译32位。 我安装了ia32-libs和gcc-multilib软件包。 我设法在3个不同的计算机上编译它,但在这个计算机上,它失败了一个奇怪的错误。 出于某种原因,libm.so没有正确拾取,或者库有问题。 这是实际的编译行失败,因为它是从Makefile中提取的。 gcc -o x86_32_obj/foo x86_32_obj/foomain.o -m32 -fPIC -fno-stack-protector -lc -lgcc -lm -lpthread -lrt -lstdc++ ../libfoo/lib/./libfii.x86_32.a 这是输出 /usr/bin/ld: ../libfoo/lib/./libfoo.x86_32.a(NK_Meas.o): undefined reference to symbol 'expf@@GLIBC_2.0' /usr/bin/ld: note: 'expf@@GLIBC_2.0' is defined in DSO /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib32/libm.so so try adding it to the linker command line /usr/lib/gcc/x86_64-linux-gnu/4.6/../../../../lib32/libm.so: could not read symbols: Invalid operation collect2: […]

Android上的OpenCL i.MX6(udoo板)

正如我试图比较Renderscript和OpenCL,我想得到的OpenCL在Udoo板的i.MX6处理器上工作。 我从linux udoo安装中取出了libOpenCL.so,并将其放到Android udoo板上(因为Android版本上没有libOpenCL.so)。 当我试图加载它,它错过了这些library's: ld-2.15.so / ld-linux.so.3 / libc.so.6 / libc-2.15.so / librt.so.1 and librt-2.15.so我已经在Linux Udoo上find了这些库,并将它们移到了Android udoo板上。 但现在我得到这个错误: 01-02 00:01:12.810 E / dalvikvm(3206):dlopen(“/ system / lib / libOpenCL.so”)失败:无法加载库:soinfo_link_image(linker.cpp:1635):无法加载库“librt .so.1“所需的”libOpenCL.so“; 由soinfo_link_image(linker.cpp:1635)引起:无法加载“librt.so.1”所需的库“libc.so.6”; 由soinfo_relocate(linker.cpp:1178)引起:未知的reloctypes19 @ 0x689a13e0(1193) 我在网上find的(不是那么多)告诉我,这些.so文件是用一个Android编译器编译的,在Android上不支持。 我也在freescale论坛上发表了关于它的文章,但是我没有回复。 问:没有人在i.MX6(或udoo板)上使用Android上的OpenCL吗? 或者可以帮助我在正确的方向看?

铿锵树莓派/ Raspbian错误?

当我尝试运行铿锵作为我的C编译器时,我得到一个错误(我认为一个链接器错误) Compilation started at Sun Nov 11 14:34:55 make -k clang -std=c99 -ggdb -o0 -Wall -Werror helloworld.c -o helloworld clang: warning: unknown platform, assuming -mfloat-abi=soft /usr/bin/ld: cannot find crt1.o: No such file or directory /usr/bin/ld: cannot find crti.o: No such file or directory clang: error: linker command failed with exit code 1 (use -v to […]

创build/删除许多硬链接的缺点?

我需要创build几百到几千个临时的硬件或符号链接,这些链接将在创build后立即删除。 对于我的目的,这两种types的链接将工作(即目标不是一个目录,它始终存在于同一个文件系统) 据我了解,符号链接创build一个小文件,其中包含原始文件的path。 硬链接创build对同一个inode中的数据的引用。 所以,也许如果我要创build/删除成千上万的这些链接是创build和删除成千上万的小文件(符号链接)或成千上万的这些引用(硬链接)更好? 似乎是一个税收硬盘驱动器(也许是碎片),而另一个可能会对文件系统本身税收? inode引用存储在哪里? 我有做这么多的硬链接的风险腐败的文件系统? 速度怎么样? 感谢您的专业知识! 这是一个可以使用ffmpeg从目录中的任意图像子集中编码电影的工作。 由于ffmpeg要求文件命名正确(例如,frame%04d.jpg),我意识到我可以创build硬/ sym链接到文件的子集,只需命名适当的链接。 这避免了重命名原始文件,而不得不实际复制数据。 它工作的很好,但它需要反复创build和删除成千上万的链接。 这个问题也解决了这个问题我相信: 使用ffmpeg转换图像序列

在linux的一系列命令中,是否可以通过SSH从一个terminal链接到另一个terminal?

我试图设置一个别名,从我的本地框到我们的主服务器,然后进入一个内部框。 我正在设置RSA密钥来使这个快速,但是如果我可以将整个操作混为一个简单的命令,那将是非常好的。 拆分成部分,这将是两个步骤: local> ssh xxxx xxxx> ssh yyyy yyyy> 我宁愿使用别名“sshtoy”,一口气完成这两个,但我不知道如何链接在一起。 使用RSA密钥,我会奇迹般地在内部服务器上结束,而没有打字。 有任何想法吗? 可以这样做吗?

ld:(.eh_frame)中的错误; 没有.eh_frame_hdr表将被创build

我在C中做了一个非常简单的程序hello。当在exe文件中使用ld时返回这个 ld: error in hello(.eh_frame); no .eh_frame_hdr table will be created. 我没有在/etc/ld.so.conf定义任何LD_LIBRAY_PATH或path我已经尝试了与ls相同的结果并返回: ld: error in /bin/ls(.eh_frame); no .eh_frame_hdr table will be created. ld: warning: cannot find entry symbol _start; defaulting to 0000000000402920 发生了什么? 我使用的是Debian,我的GCC版本是(Debian 4.7.2-5 )。

构build具有依赖性的Linux共享库时,跳过编译时符号parsing

编译时链接程序在构build共享库(取决于其他共享库)时是否有gcc标志跳过符号parsing? 出于某种原因,当我尝试构build依赖于B.so和A.so的共享库C时,我的工具链给出了undefined reference错误,即使指定了相关性并存在。 我听说有一个gcc标志来将依赖关系parsing延迟到运行时。

如何包含OpenCL库以生成独立应用程序?

我试图向一个同事展示我可以用OpenCL做的事情,但是exec不会在她的电脑上运行。 一些libopencl.so (或类似的)文件丢失(即她没有安装OpenCL)。 所以我可能相当基本(Linux)的问题是,我如何包含所有必要的文件,我的小C + OpenCL程序也将在没有OpenCL的机器上运行?