OpenSSL 3.0 missing structures definition - c++

While migrating from OpenSSL 1.0.2 to 3.0 code compilation is failing reason being most of the structures are not defined in latest header file.
specifies undefined struct/union 'x509_st'
specifies undefined struct/union 'X509_crl_st'
specifies undefined struct/union 'x509_store_ctx_st
specifies undefined struct/union 'X509_name_entry_st'
use of undefined type 'evp_md_st'
use of undefined type 'ssl_st'
specifies undefined struct/union 'X509_extension_st
undefined struct/union 'X509_name_entry_st'
use of undefined type 'evp_md_st
What is the alternate to this, please help.
I dont find documentation related to structures in openSSL 3.0 migration guide.
Am I missing something ?

Related

How to link library scalapack and blacs while compilation

When compiling a fortran code, I set
FCL = mpiifort -qmkl=sequential
LLIBS += -L$(MKLROOT)/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64
but when compiling code, it always links to libmkl_scalapack_lp64.so, not libmkl_scalapack_lp64.a. Then error appears,
ifort: command line warning #10006: ignoring unknown option '-qmkl=sequential'
mpi.o: In function `m_max_d_':
mpi.f90:(.text+0x4b52): undefined reference to `dcopy_'
umco.o: In function `umco_mp_umco_calc_trafo_':
umco.f90:(.text+0x8c30): undefined reference to `dgetrf_'
umco.f90:(.text+0x8c69): undefined reference to `dgetri_'
umco.f90:(.text+0x8dde): undefined reference to `dgetri_'
umco.f90:(.text+0x9911): undefined reference to `dgeev_'
umco.f90:(.text+0x9aa4): undefined reference to `dgeev_'
mathtools.f90:(.text+0x3d08): undefined reference to `zgesdd_'
In function `w90_utility_mp_utility_zgemm_new_':
utility.F90:(.text+0x3712): undefined reference to `zgemm_'
/home/app/intel/compilers_and_libraries_2020.0.166/linux/mkl/lib/intel64/libmkl_scalapack_lp64.so: undefined reference to `ssteqr_'
/home/app/intel/compilers_and_libraries_2020.0.166/linux/mkl/lib/intel64/libmkl_scalapack_lp64.so: undefined reference to `dlahqr_'
What is the correct way to link these two libraries?
It depends very much on what you are doing and compiler versions, amongst other things. As such you don't provide sufficient detail for us to answer the question. But the recommended way is to use the Intel link line advisor, which will help you find the answer by filling in all the required details into a web form. You can find this at https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-link-line-advisor.html#gs.tephcr

OpenCv3.3 installation error - undefined reference to

I am trying to install OpenCv3.3 and still getting same error.
//usr/local/lib/libgtk-3.so.0: undefined reference to `g_drive_is_removable'
//usr/local/lib/libgtk-3.so.0: undefined reference to `g_app_info_launch_default_for_uri_async'
//usr/local/lib/libgtk-3.so.0: undefined reference to `g_app_info_launch_default_for_uri_finish'
I installed all dependencies and followed this tutorial:
https://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html
Does anyone know the solution, or can show me the way?
undefined reference to "somerhing " it means that these so's can not find the SO's where these functions are defined.

How to use STL on ARM Cortex-M chips?

I am using STM32 dev board with MCU G++ Compiler & Linker: arm-none-eabi-g++. However, it seems not compatible with STL:
#include <list>
int main (void)
{
std::list<int> list;
list.push_back(1);
list.sort();
return 0;
}
The linker error messages:
abort.c:(.text.abort+0xa): undefined reference to `_exit'
fstatr.c:(.text._fstat_r+0x10): undefined reference to `_fstat'
signalr.c:(.text._kill_r+0x10): undefined reference to `_kill'
signalr.c:(.text._getpid_r+0x0): undefined reference to `_getpid'
writer.c:(.text._write_r+0x12): undefined reference to `_write'
closer.c:(.text._close_r+0xc): undefined reference to `_close'
isattyr.c:(.text._isatty_r+0xc): undefined reference to `_isatty'
lseekr.c:(.text._lseek_r+0x12): undefined reference to `_lseek'
readr.c:(.text._read_r+0x12): undefined reference to `_read'
The C++ STL seems dependent on operating systems. Since the micro-controller has no such things, those essential parts are missing while linking ELF.
The problem is how can I use STL on STM32 L4-series chips?
This problem can be solved by adding -specs=nosys.specs to the G++ linker. This links in a separate library with implementations for all required system functions.
See also: http://pabigot.github.io/bspacm/newlib.html
The C Standardlibrary needs some basic functions (called stubs) to work properly. Normally the OS provides these functions.
-specs= nosys.specs provides very dumb versions of these functions. In your compiler path under /share/doc/gcc-arm-none-eabi/pdf there should be a pdf libc.pdf there you will find some information how to implement those stubs yourself (chapter Systemcalls).

Undefined references errors linking libQxt to project. Migrating from Qt4 to Qt5

I am migrating a project from Qt4.x to 5, I am almost finished but I am getting errors when linking libQxt.
At first I downloaded the libQxt for Qt5 & compiled it with Qt5 then included them in the project, but it didnt solve any of the undefined references, (probably because there are deprecated functions and such) so I downloaded the libQxt for Qt4 and compiled the libraries using Qt4, and it did solve many of the undefined references, but I am still getting two errors, which shouldnt because the functions the errors refer to are in the included libraries.
These are the errors:
./release\csnmailbox.o:csnmailbox.cpp:(.text+0x82b9): undefined reference to `_imp___ZN14QxtMailMessageC1ERK10QByteArray'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0xaebc): undefined reference to `_imp___ZNK17QxtMailAttachment7rawDataEv'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: ./release\csnmailbox.o: bad reloc address 0x1 in section `.text$_ZN16AttachmentsModelD1Ev[__ZN16AttachmentsModelD1Ev]'
collect2.exe: error: ld returned 1 exit status
And these are the linkings to the libraries:
-l:"C:/Users/Sprint/Desktop/swe/marssies/libQxtCore.a" \
-l:"C:/Users/Sprint/Desktop/swe/marssies/libQxtDesignerPlugins.a" \
-l:"C:/Users/Sprint/Desktop/swe/marssies/libQxtGui.a" \
-l:"C:/Users/Sprint/Desktop/swe/marssies/libQxtNetwork.a" \
-l:"C:/Users/Sprint/Desktop/swe/marssies/libQxtSql.a" \
-l:"C:/Users/Sprint/Desktop/swe/marssies/libQxtWeb.a" \
If I comment the line that includes the libQxtnetwork (which is the one that the program really uses) there are more errors, so I dont understand why its not detecting those 2 functions. Here are the errors I get when I comment that line:
./release\csnmailbox.o:csnmailbox.cpp:(.text+0x167): undefined reference to `_imp___ZNK14QxtMailMessage11attachmentsEv'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0x61c4): undefined reference to `_imp___ZNK14QxtMailMessage11extraHeaderERK7QString'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0x6227): undefined reference to `_imp___ZNK14QxtMailMessage11extraHeaderERK7QString'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0x62a7): undefined reference to `_imp___ZNK14QxtMailMessage11extraHeaderERK7QString'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0x6dac): undefined reference to `_imp___ZNK14QxtMailMessage11extraHeaderERK7QString'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0x73c9): undefined reference to `_imp___ZNK14QxtMailMessage11attachmentsEv'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0x7500): undefined reference to `_imp___ZNK14QxtMailMessage11attachmentsEv'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0x82b9): undefined reference to `_imp___ZN14QxtMailMessageC1ERK10QByteArray'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0x85dc): undefined reference to `_imp___ZNK14QxtMailMessage11extraHeaderERK7QString'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0x8814): undefined reference to `_imp___ZN14QxtMailMessage14setExtraHeaderERK7QStringS2_'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0x9b61): undefined reference to `_imp___ZNK14QxtMailMessage14hasExtraHeaderERK7QString'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0x9cad): undefined reference to `_imp___ZNK14QxtMailMessage11extraHeaderERK7QString'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0xaaff): undefined reference to `_imp___ZNK14QxtMailMessage4bodyEv'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0xab40): undefined reference to `_imp___ZNK14QxtMailMessage11attachmentsEv'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0xacb6): undefined reference to `_imp___ZNK14QxtMailMessage11attachmentsEv'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0xaeb0): undefined reference to `_imp___ZNK14QxtMailMessage10attachmentERK7QString'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0xaebc): undefined reference to `_imp___ZNK17QxtMailAttachment7rawDataEv'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0xaee7): undefined reference to `_imp___ZN17QxtMailAttachmentD1Ev'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0xafd2): undefined reference to `_imp___ZN17QxtMailAttachmentD1Ev'
./release\csnmailbox.o:csnmailbox.cpp:(.text+0xb695): undefined reference to `_imp___ZNK14QxtMailMessage11extraHeaderERK7QString'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/bin/ld.exe: ./release\csnmailbox.o: bad reloc address 0x1 in section `.text$_ZN16AttachmentsModelD1Ev[__ZN16AttachmentsModelD1Ev]'
I hope someone can enlighten me with some knowledge.
Thankyou very much.
EDIT: I managed to 'fix' those errors, I was missing something so simple as
#include <QxtNetwork>
(I didnt write this code, which makes porting harder than it should)
Bad thing is I have very similar errors now:
..\marssies\csnmailbox.cpp: In member function 'void CSNMailBox::onAttachmentDoubleClicked(const QModelIndex&)':
..\marssies\csnmailbox.cpp:183:46: error: 'class QxtMailAttachment' has no member named 'rawData'
_f.write(_m->attachment(_fname.toLatin1()).rawData());
..\marssies\csnmailbox.cpp: In member function 'virtual void MailWorker::run()':
..\marssies\csnmailbox.cpp:491:57: error: no matching function for call to 'QxtMailMessage::QxtMailMessage(QByteArray)'
m_nm.append(__mm = new QxtMailMessage(_m.toLatin1()));
^
I will try to solve these now, at least I got past that point.
EDIT2: I have managed to solve the first error by changing rawData() to mimeData(), it must have been deprecated. I hope the functionality stays the same.
EDIT3: Apparently the last error is just an issue with the constructor:
QxtMailMessage* __mm= new QxtMailMessage(_m.toLatin1());
The constructor accepts either a QxtMailMessage object or qstrings sender, recipient, but I think _m is the message. I will have to ask who wrote the code, because the names of the variables dont help at all.
I can say the question has been solved. Thankyou.

Mingw and libraw results in undefined reference

Is anyone using libraw with mingw? I am trying to compile a program and get the following errors:
obj\Release\inc\img\cimg.o:cimg.cpp|| undefined reference to `_imp___ZN6LibRawC1Ej'|
obj\Release\inc\img\cimg.o:cimg.cpp|| undefined reference to `_imp___ZN6LibRaw9open_fileEPKcx'|
obj\Release\inc\img\cimg.o:cimg.cpp|| undefined reference to `_imp___ZN6LibRaw6unpackEv'|
obj\Release\inc\img\cimg.o:cimg.cpp|| undefined reference to `_imp___ZN6LibRaw13dcraw_processEv'|
obj\Release\inc\img\cimg.o:cimg.cpp|| undefined reference to `_imp___ZN6LibRaw20dcraw_make_mem_imageEPi'|
obj\Release\inc\img\cimg.o:cimg.cpp|| undefined reference to `_imp___ZN6LibRaw7recycleEv'|
obj\Release\inc\img\cimg.o:cimg.cpp:(.text$_ZN6LibRawD1Ev[LibRaw::~LibRaw()]+0xf)||undefined reference to `_imp___ZN6LibRaw7recycleEv'|
||=== Build finished: 7 errors, 0 warnings ===|
I added libraw.a to my project. Can't figure the problem out.
Has anyone an idea?
From those symbol names, it looks like you're trying to compile against a DLL version of libraw (hinted at by the _imp___ prefix). Check your libraw header files and make sure that the function names don't have anything like __declspec(dllimport) or __attribute__((dllimport)) in front of them. These are sometimes hidden by a macro definition, so check the header files to see if there's another macro you can define which will cause it not to use that attribute in the function prototypes.