General :: Libraries - Binary Executable Properties : Ldd Alternative?
Mar 23, 2011
The Linux ldd command can show the dynamic libraries used by an executable. It's a bash script.But it seems to be fragile, and does not work on some binaries. Is there an alternative tool? In my specific example, I can use:
% file datab2txt
datab2txt: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, for GNU/Linux 2.4.0, not stripped
I'll be using a specific example, but really this generalizes to pretty much any binary on linux that can't seem to find its' dependent libraries. So, I have a program that won't run because of missing libraries:
./cart5: error while loading shared libraries: libcorona-1.0.2.so: cannot open shared object file: No such file or directory
ldd sheds some light on the issue: linux-vdso.so.1 => (0x00007fff18b01000) libcorona-1.0.2.so => not found libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.3/libstdc++.so.6
I am learning C++ and wish to include some Boost functions in my code. My machine is running Debian Linux with the pre-installed boost binarys.I have a couple of questions:How do I include the library in my C++ code as there are no cpp or h files only binary files (eg /usr/lib/libboost_regex-d.so and /usr/lib/libboost_regex-d.a)How do I comile the code. I am using DialogBlocks for creating forms using wxwidgets. The editor also compiles the code using the gcc compiler. Do I have to give an instruction to the compiler saying which file is requried and where to find it? If so, any ideas how this is done?
Since I read that executing a library could return its version number, I ran "/lib/libc.so.0" on uClinux, but it triggers an error.I'm told that random libraries are not directly executable. Does someone know what a random library is?PS: In case that matters, here's the short version of the error:
Code: Undefined instruction <5> - May be used to emulate instructions that are not defined for
In a project I'm working on with a few other people, I got the task of writing an assembler. The last thing I do is convert the commands into a binary representation, and jam it into a file. Now one of my teammates said he'd like to be able to "reference" the code within another program. He said he'd be able to do this if the file I output is a Linux object file. I'm thinking it'd also work as an executable. Anyway, he said he'd like to be able to grab the file and reference the binary by address. I'm still fuzzy on this, and if you're confused with what I said here, please tell me so I can ask him for better details.Anyway, I'm aware that gcc can compile files to ".o", but that's only for C/C++, and my file is just binary. I'm also aware of "ld", but I haven't seen any use of it to help me. I'm happy to hear suggestions as to what I can do. If anything, I think I'll implement a few functions to grab the bits and hand them to him in an array or something.
Why many Linux distros are trying to use always the latest versions of the libraries and don't save the old libraries for compatibility? I mean, I can see libtiff for example, i can found a libtiff.so.5 on my /usr/lib, but doesn't store a libtiff.so.4 or 3 just for binary applications or games. For this example, I need libtiff.so.4 for uplink.
That should happen too on the old version of sims for linux, some ID games or others.What's wrong with storing old libraries? PD: Yay, my first post on 3 years!
I hope this post stands in the right section.I have a commandline i need to enter in terminal when i want to run a program. i tought lets put that piece of command in an .sh file and just click the file to run the program (then i dont need to open terminal first an give in the command) however the .sh file does not open the program. so i propably need to make a executable (application/x-executable).
I am running into a snag on .exe files in Lucid. I have Wine installed, but I can not open the file as it is blocked from executing with a window popping up telling me that this file was blocked due to security reasons. I go into the files properties and try to change the permission but that does not help. Is there a way to get around this? Possibly in the terminal as root?
I am struggling to learn the command line, and am stuck to the following In my directory ~/Music , I have many music archives , total about 0,8 Gbyte . Yet , changing to this directory ) and giving ls -dlh , I get
ioannis@ioannis-laptop:~/Music$ ls -ldh drwxr-xr-x 4 ioannis ioannis 4.0K 2011-03-04 14:55
So, only 4 k size and no info about the number of the files in the dir
When I set up a Virtual Machine with windows (using VMPlayer), I set the Network Connection properties from the VM settings from NAT to bridged. Then I proceed to set the following IP Properties in the OS (see image below) so that the Virtual Windows OS becomes part of my network.How do I set the same IP Properties on a Linux machine (I use CentOS) using terminal? If its any file that needs to be edited please let me know which. I wish to set up the virtual Linux machine similar to how my Virtual Windows machines are set up.
I use xterm with a particular font size and type. But every time I start xterm I have to give them in arguments
xterm -fa terminus -fs 12
Is there some configuration file where I can out the above parameters and xterm will pick them itself. But I don't want these properties to be set globally. Every user should be able to set it for himself. I have searched all the hidden folders and rc files in my home folder, but didn't find anyone related to xterm. What should I do? Similarly every time I start screen, I have to issue
:caption always :caption string %w
Can I make it automatic by editing some configuration file? Is there any way through which every xterm I start will have a screen session already open in it?
After I edit /etc/group and I add a user to groups it didn't belong to, the user will not be able to use it's newly acquired privileges unless it starts a new session. Is there a command to refresh user/group properties in an ongoing session?
I am running a HP dc5750 dual core computer with a 512MB Nvidia 7200/7300 graphics card my operating system is Ubuntu 10.10. Both my processors are operating at 98-104% cpu usage, it appears that gnome-appearance-properties is the culprit and the only way to return to normal is to end these processes. I have been setting up the desktop cube to my liking and the processor appears to rise up to 100% again. Would getting a 1GB graphics card correct this or is this a bug in maverick meerkat. Any advice would be appreciated. Please keep it simply as I am a Newbie to Linux and find things over-whelming at times. Also would running at 100% on both processors at indefinite periods of time harm my computer.
Is it possible to convert/recompile an already compiled x86 binary into an ARM binary?I'm using a BeagleBoard with a command-line Ubuntu (Maverick) and want to run a Ventrilo server but the x86 executable they supply cannot be run on the hardware as far as I can tell (most likely due to differing architecture).Unfortunately I don't have access to the source to allow me to recompile it natively.
I need to change the functions of some linux commands. We can't edit the binary files provided in /bin, is there any other method other than alias.For ex. - I need to change the function chmod so that it takes only three consecutive integers as input (chmod 777 filename) and nothing else ? Do I have to write by own code for it, or is there any other alternate method.
Suppose i have some binary blobs in ~/pkg/opt, ( I created those with the standard ./configure, make, make DESTDIR=~/pkg/opt install ).Is it possible to pack this structure into an installable rpm that can be installed/uninstalled from a RHEL/CentOS system...? rpm -ivh my_package.rpm ? Doing this in Slackware is easy, as well as in Arch, one installs to a fakeroot ( pkg ), creates a PKGBUILD, and runs makepkg -R PKGBUILD, this creates an installable Arch Package. But i am not very familiar with the more fashionable package formats, *.debs and *.rpms. Can i just pack the thing from binary, or do I have to build it and pack it in the process? makepkg -R PKGBUILD just packs it if one is lazy enough to write the whole PKGBUILD.
Right now to install software from source I do a ./configure && make && make install which doesn't allow for easy uninstallation (some don't come with an 'uninstall' goal, and if they do you have to keep the source around). I'd like to learn how to create binary RPMs from source tar.gz files (one reason being that it makes for easier uninstallation). I tried the following but it complains with the following errors:
Code: $ rpmbuild -ta mysource.tar.gz error: Name field must be present in package: (main package) error: Version field must be present in package: (main package) error: Release field must be present in package: (main package) error: Summary field must be present in package: (main package) error: Group field must be present in package: (main package) error: License field must be present in package: (main package)
Apparently that's what happens when there is no SPEC file in the tarball. But all the tars I've tried give this same error. Is there a simple way to create binary RPMs from source files - as an example, this source tar [URL].
Using Mysql binary log we can able to take incremental backup perfectly, like that we can able to create binary log for normal directory (or) is there any option to enable binary log for normal directory.?
I cannot figure out how to "install" a program I downloaded. It comes in Windows, Mac, and Linux flavors, and I did acquire the Linux version, which comes in a ZIP file. After I unzip it and cd to the directory it is in, I had an earlier version working a few months ago, but cannot recall how I made it work back then.