检查来自/ usr/bin/ldd的源代码,我看到它使用ld-linux查找可执行文件的依赖项,尽管它首先使用--verify参数调用ld-linux.然后根据ld-linux --verify调用的退出代码,脚本的行为会有所不同.
ld-linux的手册页没有提供退出代码的任何信息,谷歌搜索没有任何价值.是否有任何文档(除了通过查看ld-linux的源代码)提供了ld-linux --verfify的退出代码列表及其各自的含义?
这是我现在的情况:
我想在Linux上发布一个二进制应用程序,它可以在几个发行版上运行(不是所有发行版,只是目前最重要的一个,让我们为了讨论而专注于Ubuntu和Fedora).有问题的应用程序链接到它libbz2的一些工作.一个简单的"Hello World"将说明这种情况:
/* main.cpp */
#include <iostream>
int main(int argc, char* argv[])
{
std::cout << "Hello World!\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该应用程序是这样构建的:
g++ -lbz2 -o test.bin main.cpp
Run Code Online (Sandbox Code Playgroud)
我的构建系统在Ubuntu上.当我在生成的二进制文件上使用ldd执行检查时,它将libbz2.so.1.0列为运行时依赖项.当我把这个应用程序带到Fedora机器时,应用程序不运行,ldd显示它无法找到libbz2.so.1.0.Fedora的只有libbz2.so.1和libbz2.so.1.0.4,但不会libbz2.so.1.0.
Red Hat的Bugzilla数据库显示这种行为不是一个bug,而是一个功能.我真的不需要libbz2.so.1.0,我会满意只是简单地链接libbz2.so.1,但我还没弄清楚如何.
我之前看到过类似的问题,但是接受的答案(你可以在链接器命令行上传递实际的.so文件而不是-l)似乎不起作用.我尝试使用以下命令构建:
g++ /lib/libbz2.so.1 -o test.bin main.cpp
Run Code Online (Sandbox Code Playgroud)
但是,ldd仍然提到应用程序依赖libbz2.so.1.0,即使我将全名传递给g ++.
现在,问题是,是否有一种方法可以让Ubuntu构建应用程序以使其仅依赖libbz2.so.1而不依赖于libbz2.so.1.0?
谢谢.
我遇到了一行代码:
int a = 10;
int b = 40;
a = a + b - (b = a);
cout << a << " " << b << endl;
Run Code Online (Sandbox Code Playgroud)
我无法理解这段代码会发生什么.有人能为我解释一下吗?
class A{
public:
void foo(int x)
{
cout << "foo with one\n";
}
void foo(int x, int y=10)
{
cout << "foo with two\n";
}
};
int main()
{
A a;
a.foo(1); //error?
}
Run Code Online (Sandbox Code Playgroud)
那么,为什么我不能void foo(int)使用带有默认参数的函数重载?
根据SGI关于关联容器的文档,"由于元素是根据其键存储的,因此与每个元素相关联的键必须是不可变的".我有时使用指针作为std :: map的键,因为虽然指向的对象可能是可变的,但指针本身是常量.
QPointer在技术上是一个模仿指针的对象,Qt的doc说我们可以像指针一样使用QPointers.由于QPointer对象本身可能在执行期间发生变化,它仍然可以用作std :: map容器的键吗?
编辑1:我不能使用QMap,我必须坚持使用std :: map.
编辑2:当我使用QPointer时代码编译.问题是我是否应该在运行时期待令人不快的意外.
我知道XInitThreads()将允许我从主线程以外的线程调用X服务器,如果我想使用Qt从辅助线程进行OpenGL调用,那么Xlib中的并发线程支持是必要的.我对我的应用程序有这样的需求,但是在非常罕见的情况下.不幸的是,XInitThreads()需要在应用程序执行的最初阶段调用,因此对于特定的运行是否需要它会影响它(如果我需要多线程OpenGL,我在运行应用程序之前无法知道)支持与否).
我很确定如果我无用地调用XInitThread(),应用程序将保持不变的整体行为,但编程完全是权衡,我很确定多线程支持不是Xlib的默认行为.
该手册页说,建议单线程程序不要调用此函数,但它没有说明原因.调用XInitThreads()时的权衡是什么?
我试图通过套接字发送一个整数.我正在使用此代码执行此操作; 但是,我的C代码将无法编译.编译器抱怨myInt尚未声明.
int tmp = htonl(myInt);
write(socket, &tmp, sizeof(tmp));
Run Code Online (Sandbox Code Playgroud)
我如何申报myInt?谢谢.
我有一个用C++代码构建的libfoo.so库(用gcc编译),我想快速测试一些导出的类(基本上,实例化一个类然后调用它的方法来检查输出).
虽然我可以在C/C++中使用链接到相关库的主文件来构建我的测试,但我认为如果可以从命令行简单地调用Python并从中调用方法,则会更容易那里.
我知道我可以使用ctypes中的CDLL来加载C风格的库,但是C++库和对象有类似的功能吗?
编辑:理想情况下,我不想修改C++代码,我需要按原样使用它.
您好我如何在FragmentTabHost中创建底部TabWidget?我的xml看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<FrameLayout
android:id="@+id/realtabcontent"
android:layout_width="match_parent"
android:layout_height="fill_parent" />
</FrameLayout>
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:orientation="horizontal"
android:tabStripEnabled="false" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
但我的TabWidget仍然位于顶部.
android android-layout android-tabhost android-fragments android-tabs
嗨我打算设计一个社交网站(如orkut)asp.net mvc.我陷入了数据库设计.任何人都为我提供了资源.
这是一段代码,为我的问题设置了上下文(这是C++)
enum Gender { Gender_MALE, Gender_FEMALE, Gender_UNKNOWN };
enum Age { Age_CHILD, Age_ADULT, Age_SENIOR, Age_UNKNOWN };
struct Person {
int id;
Gender gender;
Age age;
};
std::list<Person> people;
Run Code Online (Sandbox Code Playgroud)
在填写人员列表后,我想获得列表中有多少项具有特定性别或年龄的记录.我知道我可以简单地遍历列表并手动计数,但我希望在某处可能有更好的优化版本的这种算法.我读到了有关boost计数累加器的信息,但我不确定在这种情况下我是否可以使用它.
boost(或标准库)提供了一些我可能忽略的东西,通过属性的值来计算列表中的项目数量?
我想创建一个符合以下结构的软件:
一个GUI窗口,以及许多Qt动态库,它们导出功能接口.
因此,要清除两件事,如何为Qt应用程序制作插件以及如何加载它们,请加载导出的函数.
非常感谢 !
c++ ×7
qt ×3
c ×2
linux ×2
stl ×2
accumulator ×1
android ×1
android-tabs ×1
boost ×1
g++ ×1
overloading ×1
python ×1
qpointer ×1
qt4 ×1
x11 ×1