Why does `ldd ` output “??? => ???” (question marks in both library and location)?Why does ldd show...
Are employers legally allowed to pay employees in goods and services equal to or greater than the minimum wage?
Are differences between uniformly distributed numbers uniformly distributed?
A torrent of foreign terms
Why won't the Republicans use a superdelegate system like the DNC in their nomination process?
My cat is a houdini
Can lodestones be used to magnetize crude iron weapons?
Help, I cannot decide when to start the story
Did Pope Urban II issue the papal bull "terra nullius" in 1095?
Are those flyers about apartment purchase a scam?
Crippling fear of hellfire &, damnation, please help?
In which case does the Security misconfiguration vulnerability apply to?
How do you deal with the emotions of not being the one to find the cause of a bug?
Markov-chain sentence generator in Python
Why command hierarchy, if the chain of command is standing next to each other?
Why is the result of ('b'+'a'+ + 'a' + 'a').toLowerCase() 'banana'?
How do some PhD students get 10+ papers? Is that what I need for landing good faculty position?
(A room / an office) where an artist works
Why are Tucker and Malcolm not dead?
How far did Gandalf and the Balrog drop from the bridge in Moria?
Telephone number in spoken words
Chunk + Enumerate a list of digits
How big are the Choedan Kal?
Do beef farmed pastures net remove carbon emissions?
How can I find an old paper when the usual methods fail?
Why does `ldd ` output “??? => ???” (question marks in both library and location)?
Why does ldd show this dynamic linker location?What does bash -l do and why can't it find ssh?ldd shows library exists and is linked, program doesn't find itError while building snipersim: “relocation R_X86_64_32S against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC”ldd returns “not a dynamic executable” for a 64-bit ELF, even though objdump and readelf disagreeHow to install a specific version of GCC in Kali Linux?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}
Running ldd <dynamic_lib>
, I noticed that there are some entries that read ??? => ???
. Searching for a variety of combinations of "Linux", "ldd
" and "??? => ???
", both via search engine and on this site did not turn up anything.
Possibly relevant: the dynamic library in question was compiled on Windows 10 under MSYS2 using the built-in GCC Suite.
windows gcc dynamic-linking msys
add a comment |
Running ldd <dynamic_lib>
, I noticed that there are some entries that read ??? => ???
. Searching for a variety of combinations of "Linux", "ldd
" and "??? => ???
", both via search engine and on this site did not turn up anything.
Possibly relevant: the dynamic library in question was compiled on Windows 10 under MSYS2 using the built-in GCC Suite.
windows gcc dynamic-linking msys
1
Possibly relevant: github.com/msys2/MINGW-packages/issues/4164
– muru
19 hours ago
@muru I had resisted installing ntldd because I was working under the vanilla MSYS2 terminal, but I just downloaded it and it does seem very useful. Thanks!
– JDQ
13 hours ago
add a comment |
Running ldd <dynamic_lib>
, I noticed that there are some entries that read ??? => ???
. Searching for a variety of combinations of "Linux", "ldd
" and "??? => ???
", both via search engine and on this site did not turn up anything.
Possibly relevant: the dynamic library in question was compiled on Windows 10 under MSYS2 using the built-in GCC Suite.
windows gcc dynamic-linking msys
Running ldd <dynamic_lib>
, I noticed that there are some entries that read ??? => ???
. Searching for a variety of combinations of "Linux", "ldd
" and "??? => ???
", both via search engine and on this site did not turn up anything.
Possibly relevant: the dynamic library in question was compiled on Windows 10 under MSYS2 using the built-in GCC Suite.
windows gcc dynamic-linking msys
windows gcc dynamic-linking msys
edited 13 hours ago
JDQ
asked yesterday
JDQJDQ
83 bronze badges
83 bronze badges
1
Possibly relevant: github.com/msys2/MINGW-packages/issues/4164
– muru
19 hours ago
@muru I had resisted installing ntldd because I was working under the vanilla MSYS2 terminal, but I just downloaded it and it does seem very useful. Thanks!
– JDQ
13 hours ago
add a comment |
1
Possibly relevant: github.com/msys2/MINGW-packages/issues/4164
– muru
19 hours ago
@muru I had resisted installing ntldd because I was working under the vanilla MSYS2 terminal, but I just downloaded it and it does seem very useful. Thanks!
– JDQ
13 hours ago
1
1
Possibly relevant: github.com/msys2/MINGW-packages/issues/4164
– muru
19 hours ago
Possibly relevant: github.com/msys2/MINGW-packages/issues/4164
– muru
19 hours ago
@muru I had resisted installing ntldd because I was working under the vanilla MSYS2 terminal, but I just downloaded it and it does seem very useful. Thanks!
– JDQ
13 hours ago
@muru I had resisted installing ntldd because I was working under the vanilla MSYS2 terminal, but I just downloaded it and it does seem very useful. Thanks!
– JDQ
13 hours ago
add a comment |
1 Answer
1
active
oldest
votes
The ldd
command tries to link an executable or library to shared libraries in your system just as it happens when you run / use it. It will read library references from the given file and try to find them in your file system and path (LD_LIBRARY_PATH
). If it displays "???
" then this means that it cannot find some libraries in your system (and the program / library you have examined is likely not to run / be usable).
Often you will run into problems with libraries when you copy a file (executable or shared object library) from one system to another. The reason are differing system libraries - even if these only differ by version and otherwise exist.
Sometimes a solution is to copy missing libraries, too, and placing them in a folder that is included in LD_LIBRARY_PATH
. You may also set that variable for this purpose, or append a new folder because you do not want to install those copied library files into your system (!).
You can find out which libraries to copy by running ldd
on the original system.
If this is your own program or you have compiled it yourself you may in fact know which libraries are missing.
Once you have identified your libraries, you could copy them in a personal folder, e.g. into ~/libs
. Then add this folder into your library path:
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}":~/libs
if the variable already exists (test by echo $LD_LIBRARY_PATH
), or
export LD_LIBRARY_PATH=~/libs
if it does not (both bash
-style shell syntax).
Then, try ldd
again.
Later, you could start your actual program always using a shell script that sets the variable, then starts your program.
In my case, I have compiled the library myself and I am attempting to load it on the same system. It is likely that my issue is indeed that the paths to the missing libraries are not included on LD_LIBRARY_PATH.
– JDQ
13 hours ago
@JDQ OK, added something to the answer, please test and let me know.
– Ned64
13 hours ago
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f535272%2fwhy-does-ldd-dynamic-lib-output-question-marks-in-both-library%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The ldd
command tries to link an executable or library to shared libraries in your system just as it happens when you run / use it. It will read library references from the given file and try to find them in your file system and path (LD_LIBRARY_PATH
). If it displays "???
" then this means that it cannot find some libraries in your system (and the program / library you have examined is likely not to run / be usable).
Often you will run into problems with libraries when you copy a file (executable or shared object library) from one system to another. The reason are differing system libraries - even if these only differ by version and otherwise exist.
Sometimes a solution is to copy missing libraries, too, and placing them in a folder that is included in LD_LIBRARY_PATH
. You may also set that variable for this purpose, or append a new folder because you do not want to install those copied library files into your system (!).
You can find out which libraries to copy by running ldd
on the original system.
If this is your own program or you have compiled it yourself you may in fact know which libraries are missing.
Once you have identified your libraries, you could copy them in a personal folder, e.g. into ~/libs
. Then add this folder into your library path:
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}":~/libs
if the variable already exists (test by echo $LD_LIBRARY_PATH
), or
export LD_LIBRARY_PATH=~/libs
if it does not (both bash
-style shell syntax).
Then, try ldd
again.
Later, you could start your actual program always using a shell script that sets the variable, then starts your program.
In my case, I have compiled the library myself and I am attempting to load it on the same system. It is likely that my issue is indeed that the paths to the missing libraries are not included on LD_LIBRARY_PATH.
– JDQ
13 hours ago
@JDQ OK, added something to the answer, please test and let me know.
– Ned64
13 hours ago
add a comment |
The ldd
command tries to link an executable or library to shared libraries in your system just as it happens when you run / use it. It will read library references from the given file and try to find them in your file system and path (LD_LIBRARY_PATH
). If it displays "???
" then this means that it cannot find some libraries in your system (and the program / library you have examined is likely not to run / be usable).
Often you will run into problems with libraries when you copy a file (executable or shared object library) from one system to another. The reason are differing system libraries - even if these only differ by version and otherwise exist.
Sometimes a solution is to copy missing libraries, too, and placing them in a folder that is included in LD_LIBRARY_PATH
. You may also set that variable for this purpose, or append a new folder because you do not want to install those copied library files into your system (!).
You can find out which libraries to copy by running ldd
on the original system.
If this is your own program or you have compiled it yourself you may in fact know which libraries are missing.
Once you have identified your libraries, you could copy them in a personal folder, e.g. into ~/libs
. Then add this folder into your library path:
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}":~/libs
if the variable already exists (test by echo $LD_LIBRARY_PATH
), or
export LD_LIBRARY_PATH=~/libs
if it does not (both bash
-style shell syntax).
Then, try ldd
again.
Later, you could start your actual program always using a shell script that sets the variable, then starts your program.
In my case, I have compiled the library myself and I am attempting to load it on the same system. It is likely that my issue is indeed that the paths to the missing libraries are not included on LD_LIBRARY_PATH.
– JDQ
13 hours ago
@JDQ OK, added something to the answer, please test and let me know.
– Ned64
13 hours ago
add a comment |
The ldd
command tries to link an executable or library to shared libraries in your system just as it happens when you run / use it. It will read library references from the given file and try to find them in your file system and path (LD_LIBRARY_PATH
). If it displays "???
" then this means that it cannot find some libraries in your system (and the program / library you have examined is likely not to run / be usable).
Often you will run into problems with libraries when you copy a file (executable or shared object library) from one system to another. The reason are differing system libraries - even if these only differ by version and otherwise exist.
Sometimes a solution is to copy missing libraries, too, and placing them in a folder that is included in LD_LIBRARY_PATH
. You may also set that variable for this purpose, or append a new folder because you do not want to install those copied library files into your system (!).
You can find out which libraries to copy by running ldd
on the original system.
If this is your own program or you have compiled it yourself you may in fact know which libraries are missing.
Once you have identified your libraries, you could copy them in a personal folder, e.g. into ~/libs
. Then add this folder into your library path:
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}":~/libs
if the variable already exists (test by echo $LD_LIBRARY_PATH
), or
export LD_LIBRARY_PATH=~/libs
if it does not (both bash
-style shell syntax).
Then, try ldd
again.
Later, you could start your actual program always using a shell script that sets the variable, then starts your program.
The ldd
command tries to link an executable or library to shared libraries in your system just as it happens when you run / use it. It will read library references from the given file and try to find them in your file system and path (LD_LIBRARY_PATH
). If it displays "???
" then this means that it cannot find some libraries in your system (and the program / library you have examined is likely not to run / be usable).
Often you will run into problems with libraries when you copy a file (executable or shared object library) from one system to another. The reason are differing system libraries - even if these only differ by version and otherwise exist.
Sometimes a solution is to copy missing libraries, too, and placing them in a folder that is included in LD_LIBRARY_PATH
. You may also set that variable for this purpose, or append a new folder because you do not want to install those copied library files into your system (!).
You can find out which libraries to copy by running ldd
on the original system.
If this is your own program or you have compiled it yourself you may in fact know which libraries are missing.
Once you have identified your libraries, you could copy them in a personal folder, e.g. into ~/libs
. Then add this folder into your library path:
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}":~/libs
if the variable already exists (test by echo $LD_LIBRARY_PATH
), or
export LD_LIBRARY_PATH=~/libs
if it does not (both bash
-style shell syntax).
Then, try ldd
again.
Later, you could start your actual program always using a shell script that sets the variable, then starts your program.
edited 13 hours ago
answered 19 hours ago
Ned64Ned64
3,2341 gold badge16 silver badges42 bronze badges
3,2341 gold badge16 silver badges42 bronze badges
In my case, I have compiled the library myself and I am attempting to load it on the same system. It is likely that my issue is indeed that the paths to the missing libraries are not included on LD_LIBRARY_PATH.
– JDQ
13 hours ago
@JDQ OK, added something to the answer, please test and let me know.
– Ned64
13 hours ago
add a comment |
In my case, I have compiled the library myself and I am attempting to load it on the same system. It is likely that my issue is indeed that the paths to the missing libraries are not included on LD_LIBRARY_PATH.
– JDQ
13 hours ago
@JDQ OK, added something to the answer, please test and let me know.
– Ned64
13 hours ago
In my case, I have compiled the library myself and I am attempting to load it on the same system. It is likely that my issue is indeed that the paths to the missing libraries are not included on LD_LIBRARY_PATH.
– JDQ
13 hours ago
In my case, I have compiled the library myself and I am attempting to load it on the same system. It is likely that my issue is indeed that the paths to the missing libraries are not included on LD_LIBRARY_PATH.
– JDQ
13 hours ago
@JDQ OK, added something to the answer, please test and let me know.
– Ned64
13 hours ago
@JDQ OK, added something to the answer, please test and let me know.
– Ned64
13 hours ago
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f535272%2fwhy-does-ldd-dynamic-lib-output-question-marks-in-both-library%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Possibly relevant: github.com/msys2/MINGW-packages/issues/4164
– muru
19 hours ago
@muru I had resisted installing ntldd because I was working under the vanilla MSYS2 terminal, but I just downloaded it and it does seem very useful. Thanks!
– JDQ
13 hours ago