Having issue linking shared object in linux
I have been provided with .so file.
ldd libTodoAPI.so
linux-vdso.so.1 => (0x00007ffc766b8000)
libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fead8e3f000)
libsqlite3.so => /usr/lib/libsqlite3.so (0x00007fead8b6a000)
libQt5Network.so.5 => /usr/lib/libQt5Network.so.5 (0x00007fead8804000)
libQt5Script.so.5 => /usr/lib/libQt5Script.so.5 (0x00007fead838b000)
libQt5Core.so.5 => /usr/lib/libQt5Core.so.5 (0x00007fead7c4f000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fead78cd000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fead76b7000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fead72ed000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fead70e9000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fead6ecc000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fead6bc3000)
libicui18n.so.53 => /usr/lib/libicui18n.so.53 (0x00007fead6777000)
libicuuc.so.53 => /usr/lib/libicuuc.so.53 (0x00007fead63ec000)
libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007fead61ea000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fead5fe2000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fead5cd1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fead949a000)
libicudata.so.53 => /usr/lib/libicudata.so.53 (0x00007fead4649000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fead43d9000)
and with header
#ifndef TODO_API_H
#define TODO_API_H
#include <string>
using namespace std;
namespace todoarea {
class TodoAPI{
public:
static string checkDoer();
static string getInformation();
static string callTask(string funcName, string param);
static string Done(string param);
static string returnStatus(string param);
static string Close();
};
}
#endif //TODO_API_H
I am trying to create a program to call from this shared object and having problem.
//load.cpp
#include <iostream>
#include "TodoAPI.h"
using namespace todoarea;
int main(int argc, char **argv)
{
// TodoAPI* myTodo = new TodoAPI();
// myTodo>checkDoer();
// TodoAPI m;
string data = TodoAPI::checkDoer();
string a = TodoAPI::getInformation();
}
When I try to compile it
g++ load.cpp -lTodoAPI
/tmp/ccs1hwWP.o: In function `main':
load.cpp:(.text+0x27): undefined reference to `todoarea::TodoAPI::checkDoer[abi:cxx11]()'
load.cpp:(.text+0x33): undefined reference to `todoarea::TodoAPI::getInformation[abi:cxx11]()'
collect2: error: ld returned 1 exit status
If I try to see the so file
nm -s libTodoAPI.so
nm: libTodoAPI.so: no symbols
Also
nm -DC libTodoAPI.so | grep todoarea
000000000000a63a T todoarea::TodoAPI::Done(std::string)
000000000000a098 T todoarea::TodoAPI::callTask(std::string, std::string)
0000000000009e9c T todoarea::TodoAPI::getInformation()
000000000000a398 T todoarea::TodoAPI::returnStatus(std::string)
0000000000009ca0 T todoarea::TodoAPI::checkDoer()
000000000000a8dc T todoarea::TodoAPI::Close()
It has lots of functions (mostly seems like Qt) listed when I try nm with -D option.
Question: How can I use this library to create app in linux? What am I doing wrong? I tried to call functions dynamically but failed. Any help would be appreciated.
linux g++ shared-libraries
add a comment |
I have been provided with .so file.
ldd libTodoAPI.so
linux-vdso.so.1 => (0x00007ffc766b8000)
libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fead8e3f000)
libsqlite3.so => /usr/lib/libsqlite3.so (0x00007fead8b6a000)
libQt5Network.so.5 => /usr/lib/libQt5Network.so.5 (0x00007fead8804000)
libQt5Script.so.5 => /usr/lib/libQt5Script.so.5 (0x00007fead838b000)
libQt5Core.so.5 => /usr/lib/libQt5Core.so.5 (0x00007fead7c4f000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fead78cd000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fead76b7000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fead72ed000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fead70e9000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fead6ecc000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fead6bc3000)
libicui18n.so.53 => /usr/lib/libicui18n.so.53 (0x00007fead6777000)
libicuuc.so.53 => /usr/lib/libicuuc.so.53 (0x00007fead63ec000)
libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007fead61ea000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fead5fe2000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fead5cd1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fead949a000)
libicudata.so.53 => /usr/lib/libicudata.so.53 (0x00007fead4649000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fead43d9000)
and with header
#ifndef TODO_API_H
#define TODO_API_H
#include <string>
using namespace std;
namespace todoarea {
class TodoAPI{
public:
static string checkDoer();
static string getInformation();
static string callTask(string funcName, string param);
static string Done(string param);
static string returnStatus(string param);
static string Close();
};
}
#endif //TODO_API_H
I am trying to create a program to call from this shared object and having problem.
//load.cpp
#include <iostream>
#include "TodoAPI.h"
using namespace todoarea;
int main(int argc, char **argv)
{
// TodoAPI* myTodo = new TodoAPI();
// myTodo>checkDoer();
// TodoAPI m;
string data = TodoAPI::checkDoer();
string a = TodoAPI::getInformation();
}
When I try to compile it
g++ load.cpp -lTodoAPI
/tmp/ccs1hwWP.o: In function `main':
load.cpp:(.text+0x27): undefined reference to `todoarea::TodoAPI::checkDoer[abi:cxx11]()'
load.cpp:(.text+0x33): undefined reference to `todoarea::TodoAPI::getInformation[abi:cxx11]()'
collect2: error: ld returned 1 exit status
If I try to see the so file
nm -s libTodoAPI.so
nm: libTodoAPI.so: no symbols
Also
nm -DC libTodoAPI.so | grep todoarea
000000000000a63a T todoarea::TodoAPI::Done(std::string)
000000000000a098 T todoarea::TodoAPI::callTask(std::string, std::string)
0000000000009e9c T todoarea::TodoAPI::getInformation()
000000000000a398 T todoarea::TodoAPI::returnStatus(std::string)
0000000000009ca0 T todoarea::TodoAPI::checkDoer()
000000000000a8dc T todoarea::TodoAPI::Close()
It has lots of functions (mostly seems like Qt) listed when I try nm with -D option.
Question: How can I use this library to create app in linux? What am I doing wrong? I tried to call functions dynamically but failed. Any help would be appreciated.
linux g++ shared-libraries
I think you might need to specify the path to your shared library-L/path/to/your/so -lTodoAPI
. Try this: gist.github.com/gubatron/32f82053596c24b6bec6
– Milos Matovic
Nov 12 '18 at 14:46
I did try the -L option I even copied this .so file to /usr/lib and /usr/local/lib all same.
– THEn
Nov 12 '18 at 15:17
i am suspecting that this .so file was compiled with Qt libraries and might have different format or structure but I am not sure. I am new to linux.
– THEn
Nov 12 '18 at 15:19
add a comment |
I have been provided with .so file.
ldd libTodoAPI.so
linux-vdso.so.1 => (0x00007ffc766b8000)
libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fead8e3f000)
libsqlite3.so => /usr/lib/libsqlite3.so (0x00007fead8b6a000)
libQt5Network.so.5 => /usr/lib/libQt5Network.so.5 (0x00007fead8804000)
libQt5Script.so.5 => /usr/lib/libQt5Script.so.5 (0x00007fead838b000)
libQt5Core.so.5 => /usr/lib/libQt5Core.so.5 (0x00007fead7c4f000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fead78cd000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fead76b7000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fead72ed000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fead70e9000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fead6ecc000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fead6bc3000)
libicui18n.so.53 => /usr/lib/libicui18n.so.53 (0x00007fead6777000)
libicuuc.so.53 => /usr/lib/libicuuc.so.53 (0x00007fead63ec000)
libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007fead61ea000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fead5fe2000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fead5cd1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fead949a000)
libicudata.so.53 => /usr/lib/libicudata.so.53 (0x00007fead4649000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fead43d9000)
and with header
#ifndef TODO_API_H
#define TODO_API_H
#include <string>
using namespace std;
namespace todoarea {
class TodoAPI{
public:
static string checkDoer();
static string getInformation();
static string callTask(string funcName, string param);
static string Done(string param);
static string returnStatus(string param);
static string Close();
};
}
#endif //TODO_API_H
I am trying to create a program to call from this shared object and having problem.
//load.cpp
#include <iostream>
#include "TodoAPI.h"
using namespace todoarea;
int main(int argc, char **argv)
{
// TodoAPI* myTodo = new TodoAPI();
// myTodo>checkDoer();
// TodoAPI m;
string data = TodoAPI::checkDoer();
string a = TodoAPI::getInformation();
}
When I try to compile it
g++ load.cpp -lTodoAPI
/tmp/ccs1hwWP.o: In function `main':
load.cpp:(.text+0x27): undefined reference to `todoarea::TodoAPI::checkDoer[abi:cxx11]()'
load.cpp:(.text+0x33): undefined reference to `todoarea::TodoAPI::getInformation[abi:cxx11]()'
collect2: error: ld returned 1 exit status
If I try to see the so file
nm -s libTodoAPI.so
nm: libTodoAPI.so: no symbols
Also
nm -DC libTodoAPI.so | grep todoarea
000000000000a63a T todoarea::TodoAPI::Done(std::string)
000000000000a098 T todoarea::TodoAPI::callTask(std::string, std::string)
0000000000009e9c T todoarea::TodoAPI::getInformation()
000000000000a398 T todoarea::TodoAPI::returnStatus(std::string)
0000000000009ca0 T todoarea::TodoAPI::checkDoer()
000000000000a8dc T todoarea::TodoAPI::Close()
It has lots of functions (mostly seems like Qt) listed when I try nm with -D option.
Question: How can I use this library to create app in linux? What am I doing wrong? I tried to call functions dynamically but failed. Any help would be appreciated.
linux g++ shared-libraries
I have been provided with .so file.
ldd libTodoAPI.so
linux-vdso.so.1 => (0x00007ffc766b8000)
libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007fead8e3f000)
libsqlite3.so => /usr/lib/libsqlite3.so (0x00007fead8b6a000)
libQt5Network.so.5 => /usr/lib/libQt5Network.so.5 (0x00007fead8804000)
libQt5Script.so.5 => /usr/lib/libQt5Script.so.5 (0x00007fead838b000)
libQt5Core.so.5 => /usr/lib/libQt5Core.so.5 (0x00007fead7c4f000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fead78cd000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fead76b7000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fead72ed000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fead70e9000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fead6ecc000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fead6bc3000)
libicui18n.so.53 => /usr/lib/libicui18n.so.53 (0x00007fead6777000)
libicuuc.so.53 => /usr/lib/libicuuc.so.53 (0x00007fead63ec000)
libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007fead61ea000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fead5fe2000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fead5cd1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fead949a000)
libicudata.so.53 => /usr/lib/libicudata.so.53 (0x00007fead4649000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fead43d9000)
and with header
#ifndef TODO_API_H
#define TODO_API_H
#include <string>
using namespace std;
namespace todoarea {
class TodoAPI{
public:
static string checkDoer();
static string getInformation();
static string callTask(string funcName, string param);
static string Done(string param);
static string returnStatus(string param);
static string Close();
};
}
#endif //TODO_API_H
I am trying to create a program to call from this shared object and having problem.
//load.cpp
#include <iostream>
#include "TodoAPI.h"
using namespace todoarea;
int main(int argc, char **argv)
{
// TodoAPI* myTodo = new TodoAPI();
// myTodo>checkDoer();
// TodoAPI m;
string data = TodoAPI::checkDoer();
string a = TodoAPI::getInformation();
}
When I try to compile it
g++ load.cpp -lTodoAPI
/tmp/ccs1hwWP.o: In function `main':
load.cpp:(.text+0x27): undefined reference to `todoarea::TodoAPI::checkDoer[abi:cxx11]()'
load.cpp:(.text+0x33): undefined reference to `todoarea::TodoAPI::getInformation[abi:cxx11]()'
collect2: error: ld returned 1 exit status
If I try to see the so file
nm -s libTodoAPI.so
nm: libTodoAPI.so: no symbols
Also
nm -DC libTodoAPI.so | grep todoarea
000000000000a63a T todoarea::TodoAPI::Done(std::string)
000000000000a098 T todoarea::TodoAPI::callTask(std::string, std::string)
0000000000009e9c T todoarea::TodoAPI::getInformation()
000000000000a398 T todoarea::TodoAPI::returnStatus(std::string)
0000000000009ca0 T todoarea::TodoAPI::checkDoer()
000000000000a8dc T todoarea::TodoAPI::Close()
It has lots of functions (mostly seems like Qt) listed when I try nm with -D option.
Question: How can I use this library to create app in linux? What am I doing wrong? I tried to call functions dynamically but failed. Any help would be appreciated.
linux g++ shared-libraries
linux g++ shared-libraries
edited Nov 12 '18 at 15:18
asked Nov 12 '18 at 12:32
THEn
1,44032534
1,44032534
I think you might need to specify the path to your shared library-L/path/to/your/so -lTodoAPI
. Try this: gist.github.com/gubatron/32f82053596c24b6bec6
– Milos Matovic
Nov 12 '18 at 14:46
I did try the -L option I even copied this .so file to /usr/lib and /usr/local/lib all same.
– THEn
Nov 12 '18 at 15:17
i am suspecting that this .so file was compiled with Qt libraries and might have different format or structure but I am not sure. I am new to linux.
– THEn
Nov 12 '18 at 15:19
add a comment |
I think you might need to specify the path to your shared library-L/path/to/your/so -lTodoAPI
. Try this: gist.github.com/gubatron/32f82053596c24b6bec6
– Milos Matovic
Nov 12 '18 at 14:46
I did try the -L option I even copied this .so file to /usr/lib and /usr/local/lib all same.
– THEn
Nov 12 '18 at 15:17
i am suspecting that this .so file was compiled with Qt libraries and might have different format or structure but I am not sure. I am new to linux.
– THEn
Nov 12 '18 at 15:19
I think you might need to specify the path to your shared library
-L/path/to/your/so -lTodoAPI
. Try this: gist.github.com/gubatron/32f82053596c24b6bec6– Milos Matovic
Nov 12 '18 at 14:46
I think you might need to specify the path to your shared library
-L/path/to/your/so -lTodoAPI
. Try this: gist.github.com/gubatron/32f82053596c24b6bec6– Milos Matovic
Nov 12 '18 at 14:46
I did try the -L option I even copied this .so file to /usr/lib and /usr/local/lib all same.
– THEn
Nov 12 '18 at 15:17
I did try the -L option I even copied this .so file to /usr/lib and /usr/local/lib all same.
– THEn
Nov 12 '18 at 15:17
i am suspecting that this .so file was compiled with Qt libraries and might have different format or structure but I am not sure. I am new to linux.
– THEn
Nov 12 '18 at 15:19
i am suspecting that this .so file was compiled with Qt libraries and might have different format or structure but I am not sure. I am new to linux.
– THEn
Nov 12 '18 at 15:19
add a comment |
1 Answer
1
active
oldest
votes
You are falling foul of an ABI break between the GCC release with libTodoAPI.so
was built and the one with which you are compiling your code. See Dual ABI Troubleshooting
Troubleshooting
If you get linker errors about undefined references to symbols that involve types in the
std::__cxx11 namespace or the tag [abi:cxx11] then it probably indicates that you are
trying to link together object files that were compiled with different values for the
_GLIBCXX_USE_CXX11_ABI macro. This commonly happens when linking to a third-party library that
was compiled with an older version of GCC. If the third-party library cannot be rebuilt
with the new ABI then you will need to recompile your code with the old ABI.
Thanks, I added the -D_GLIBCXX_USE_CXX11_ABI=1 option and it went through.
– THEn
Nov 12 '18 at 15:35
when I try to execute the program I am having "symbol lookup error: /usr/lib/libssl.so.1.0.0: undefined symbol: EVP_idea_cbc" is it different issue?
– THEn
Nov 12 '18 at 15:45
1
@THEn That seems to be a manifestation of this bug
– Mike Kinghan
Nov 12 '18 at 15:50
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
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: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
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%2fstackoverflow.com%2fquestions%2f53262292%2fhaving-issue-linking-shared-object-in-linux%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
You are falling foul of an ABI break between the GCC release with libTodoAPI.so
was built and the one with which you are compiling your code. See Dual ABI Troubleshooting
Troubleshooting
If you get linker errors about undefined references to symbols that involve types in the
std::__cxx11 namespace or the tag [abi:cxx11] then it probably indicates that you are
trying to link together object files that were compiled with different values for the
_GLIBCXX_USE_CXX11_ABI macro. This commonly happens when linking to a third-party library that
was compiled with an older version of GCC. If the third-party library cannot be rebuilt
with the new ABI then you will need to recompile your code with the old ABI.
Thanks, I added the -D_GLIBCXX_USE_CXX11_ABI=1 option and it went through.
– THEn
Nov 12 '18 at 15:35
when I try to execute the program I am having "symbol lookup error: /usr/lib/libssl.so.1.0.0: undefined symbol: EVP_idea_cbc" is it different issue?
– THEn
Nov 12 '18 at 15:45
1
@THEn That seems to be a manifestation of this bug
– Mike Kinghan
Nov 12 '18 at 15:50
add a comment |
You are falling foul of an ABI break between the GCC release with libTodoAPI.so
was built and the one with which you are compiling your code. See Dual ABI Troubleshooting
Troubleshooting
If you get linker errors about undefined references to symbols that involve types in the
std::__cxx11 namespace or the tag [abi:cxx11] then it probably indicates that you are
trying to link together object files that were compiled with different values for the
_GLIBCXX_USE_CXX11_ABI macro. This commonly happens when linking to a third-party library that
was compiled with an older version of GCC. If the third-party library cannot be rebuilt
with the new ABI then you will need to recompile your code with the old ABI.
Thanks, I added the -D_GLIBCXX_USE_CXX11_ABI=1 option and it went through.
– THEn
Nov 12 '18 at 15:35
when I try to execute the program I am having "symbol lookup error: /usr/lib/libssl.so.1.0.0: undefined symbol: EVP_idea_cbc" is it different issue?
– THEn
Nov 12 '18 at 15:45
1
@THEn That seems to be a manifestation of this bug
– Mike Kinghan
Nov 12 '18 at 15:50
add a comment |
You are falling foul of an ABI break between the GCC release with libTodoAPI.so
was built and the one with which you are compiling your code. See Dual ABI Troubleshooting
Troubleshooting
If you get linker errors about undefined references to symbols that involve types in the
std::__cxx11 namespace or the tag [abi:cxx11] then it probably indicates that you are
trying to link together object files that were compiled with different values for the
_GLIBCXX_USE_CXX11_ABI macro. This commonly happens when linking to a third-party library that
was compiled with an older version of GCC. If the third-party library cannot be rebuilt
with the new ABI then you will need to recompile your code with the old ABI.
You are falling foul of an ABI break between the GCC release with libTodoAPI.so
was built and the one with which you are compiling your code. See Dual ABI Troubleshooting
Troubleshooting
If you get linker errors about undefined references to symbols that involve types in the
std::__cxx11 namespace or the tag [abi:cxx11] then it probably indicates that you are
trying to link together object files that were compiled with different values for the
_GLIBCXX_USE_CXX11_ABI macro. This commonly happens when linking to a third-party library that
was compiled with an older version of GCC. If the third-party library cannot be rebuilt
with the new ABI then you will need to recompile your code with the old ABI.
answered Nov 12 '18 at 15:20
Mike Kinghan
30.1k763112
30.1k763112
Thanks, I added the -D_GLIBCXX_USE_CXX11_ABI=1 option and it went through.
– THEn
Nov 12 '18 at 15:35
when I try to execute the program I am having "symbol lookup error: /usr/lib/libssl.so.1.0.0: undefined symbol: EVP_idea_cbc" is it different issue?
– THEn
Nov 12 '18 at 15:45
1
@THEn That seems to be a manifestation of this bug
– Mike Kinghan
Nov 12 '18 at 15:50
add a comment |
Thanks, I added the -D_GLIBCXX_USE_CXX11_ABI=1 option and it went through.
– THEn
Nov 12 '18 at 15:35
when I try to execute the program I am having "symbol lookup error: /usr/lib/libssl.so.1.0.0: undefined symbol: EVP_idea_cbc" is it different issue?
– THEn
Nov 12 '18 at 15:45
1
@THEn That seems to be a manifestation of this bug
– Mike Kinghan
Nov 12 '18 at 15:50
Thanks, I added the -D_GLIBCXX_USE_CXX11_ABI=1 option and it went through.
– THEn
Nov 12 '18 at 15:35
Thanks, I added the -D_GLIBCXX_USE_CXX11_ABI=1 option and it went through.
– THEn
Nov 12 '18 at 15:35
when I try to execute the program I am having "symbol lookup error: /usr/lib/libssl.so.1.0.0: undefined symbol: EVP_idea_cbc" is it different issue?
– THEn
Nov 12 '18 at 15:45
when I try to execute the program I am having "symbol lookup error: /usr/lib/libssl.so.1.0.0: undefined symbol: EVP_idea_cbc" is it different issue?
– THEn
Nov 12 '18 at 15:45
1
1
@THEn That seems to be a manifestation of this bug
– Mike Kinghan
Nov 12 '18 at 15:50
@THEn That seems to be a manifestation of this bug
– Mike Kinghan
Nov 12 '18 at 15:50
add a comment |
Thanks for contributing an answer to Stack Overflow!
- 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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2fstackoverflow.com%2fquestions%2f53262292%2fhaving-issue-linking-shared-object-in-linux%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
I think you might need to specify the path to your shared library
-L/path/to/your/so -lTodoAPI
. Try this: gist.github.com/gubatron/32f82053596c24b6bec6– Milos Matovic
Nov 12 '18 at 14:46
I did try the -L option I even copied this .so file to /usr/lib and /usr/local/lib all same.
– THEn
Nov 12 '18 at 15:17
i am suspecting that this .so file was compiled with Qt libraries and might have different format or structure but I am not sure. I am new to linux.
– THEn
Nov 12 '18 at 15:19